*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--warm-bg: #fdf8f4;--warm-cream: #faf3eb;--text-primary: #3d2e1f;--text-secondary: #7a6553;--border-light: #e8ddd2;--accent-warm: #c2724e;--accent-soft: #d4956b}body{font-family:Inter,system-ui,-apple-system,sans-serif;background:var(--warm-bg);color:var(--text-primary);line-height:1.5;min-height:100vh}#root{min-height:100vh}.gate-overlay{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem}.gate-box{text-align:center;background:#fff;border:1.5px solid var(--border-light);border-radius:16px;padding:2.5rem 2rem;width:100%;max-width:360px;box-shadow:0 8px 30px #0000000f}.gate-title{font-family:Lora,Georgia,serif;font-size:1.75rem;font-weight:700;color:var(--text-primary);margin-bottom:.25rem}.gate-subtitle{font-size:.9rem;color:var(--text-secondary);margin-bottom:1.5rem}.gate-input{display:block;width:100%;padding:.7rem 1rem;border:1.5px solid var(--border-light);border-radius:10px;font-family:Inter,sans-serif;font-size:.95rem;color:var(--text-primary);background:var(--warm-bg);outline:none;transition:border-color .2s ease}.gate-input:focus{border-color:var(--accent-soft)}.gate-input-error{border-color:#d4564e}.gate-error{font-size:.82rem;color:#c0443d;margin-top:.5rem}.gate-btn{display:block;width:100%;margin-top:1rem;padding:.7rem;border:none;border-radius:10px;background:var(--accent-warm);color:#fff;font-family:Inter,sans-serif;font-size:.95rem;font-weight:600;cursor:pointer;transition:background .2s ease}.gate-btn:hover{background:var(--accent-soft)}.app{max-width:960px;margin:0 auto;padding:1.5rem 1rem}.app-header{text-align:center;margin-bottom:1.5rem}.app-header h1{font-family:Lora,Georgia,serif;font-size:2rem;font-weight:700;color:var(--text-primary);margin-bottom:.15rem}.subtitle{font-size:.95rem;color:var(--text-secondary);font-weight:400}.tabs{display:flex;gap:0;margin-bottom:1.5rem;border-bottom:2px solid var(--border-light)}.tab{flex:1;padding:.75rem 1.5rem;border:none;border-bottom:3px solid transparent;background:none;font-family:Inter,sans-serif;font-size:.95rem;font-weight:500;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;margin-bottom:-2px;border-radius:0}.tab:hover{color:var(--text-primary);background:var(--warm-cream)}.tab.active{color:var(--accent-warm);border-bottom-color:var(--accent-warm);font-weight:600}.countdown-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.countdown-header h2{font-family:Lora,Georgia,serif;font-size:1.35rem;font-weight:600;color:var(--text-primary)}.toggle-btn{padding:.4rem 1rem;border-radius:20px;border:1.5px solid var(--border-light);background:#fff;font-family:Inter,sans-serif;font-size:.8rem;font-weight:500;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.toggle-btn:hover{border-color:var(--accent-soft);color:var(--accent-warm)}.no-events{text-align:center;color:var(--text-secondary);padding:3rem 1rem;font-style:italic}.event-list{display:flex;flex-direction:column;gap:.5rem}.event-card{display:flex;justify-content:space-between;align-items:center;padding:.85rem 1rem;border-radius:10px;transition:transform .15s ease,box-shadow .15s ease}.event-card:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0000000f}.event-card-left{display:flex;align-items:center;gap:.75rem}.event-badge{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1rem;flex-shrink:0}.event-info{display:flex;flex-direction:column}.event-name{font-weight:600;font-size:.95rem;color:var(--text-primary)}.event-type{font-size:.8rem;color:var(--text-secondary)}.event-days{font-weight:700;font-size:1rem;white-space:nowrap}.family-tree-wrapper{position:relative}.tree-controls{display:flex;gap:.4rem;margin-bottom:.75rem}.tree-controls button{width:36px;height:36px;border-radius:8px;border:1.5px solid var(--border-light);background:#fff;font-size:1.1rem;font-weight:600;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease;padding:0;font-family:Inter,sans-serif}.tree-controls button:last-child{width:auto;padding:0 .75rem;font-size:.8rem;font-weight:500}.tree-controls button:hover{border-color:var(--accent-soft);color:var(--accent-warm)}.family-tree-container{width:100%;height:70vh;overflow:hidden;border-radius:12px;border:1.5px solid var(--border-light);background:var(--warm-cream);position:relative;touch-action:none}.tree-canvas{display:inline-flex;padding:2rem;min-width:max-content}.family-node{display:flex;flex-direction:column;gap:.75rem}.partnership-group{display:flex;flex-direction:row;align-items:flex-start;gap:0}.couple-row{display:flex;flex-direction:column;align-items:center;gap:0;flex-shrink:0}.person-box{padding:.5rem .85rem;border-radius:8px;border:2px solid;font-size:.8rem;white-space:nowrap;cursor:default;transition:transform .15s ease,box-shadow .15s ease;position:relative;display:flex;align-items:center;gap:.35rem}.person-box:hover{transform:scale(1.05);box-shadow:0 3px 10px #0000001a;z-index:10}.person-name{font-weight:600;color:var(--text-primary)}.deceased .person-name{color:var(--text-secondary)}.deceased-marker{font-size:.7rem;color:var(--text-secondary);opacity:.7}.partnership-connector{display:flex;align-items:center;justify-content:center;height:24px;position:relative}.partnership-connector:before{content:"";position:absolute;left:50%;top:0;bottom:0;width:2px;background:var(--accent-soft);transform:translate(-50%)}.partnership-connector.divorced:before{background:#bbb;border-style:dashed}.partnership-connector.separated:before{background:#bbb}.married-icon{background:#fff;color:var(--accent-warm);font-size:.7rem;z-index:1;line-height:1}.status-icon{background:#fff;color:#999;font-size:.8rem;font-weight:600;z-index:1}.children-branch{display:flex;flex-direction:row;align-items:flex-start;margin-left:0;padding-left:1rem}.branch-line{width:24px;border-top:2px solid var(--border-light);margin-top:2rem;flex-shrink:0}.children-list{display:flex;flex-direction:column;gap:.65rem;padding-left:0;border-left:2px solid var(--border-light);padding-top:.5rem;padding-bottom:.5rem}.children-list>.family-node,.children-list>.family-node>.partnership-group{padding-left:1rem;position:relative}.children-list>.family-node:before,.children-list>.family-node>.partnership-group:before{content:"";position:absolute;left:0;top:1.1rem;width:1rem;height:0;border-top:2px solid var(--border-light)}.leaf-node{padding-left:1rem;position:relative}.leaf-node:before{content:"";position:absolute;left:0;top:1.1rem;width:1rem;height:0;border-top:2px solid var(--border-light)}.tree-tooltip{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);background:#fff;border:1.5px solid var(--border-light);border-radius:12px;padding:.85rem 1.2rem;box-shadow:0 8px 24px #0000001a;z-index:100;max-width:320px;text-align:center;animation:fadeUp .15s ease}@keyframes fadeUp{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.tree-tooltip strong{font-family:Lora,Georgia,serif;font-size:1.05rem;display:block;margin-bottom:.25rem}.tooltip-row{font-size:.82rem;color:var(--text-secondary);line-height:1.5}.tooltip-event{margin-top:.3rem;padding-top:.3rem;border-top:1px solid var(--border-light);color:var(--accent-warm);font-weight:500}@media(max-width:600px){.app{padding:1rem .75rem}.app-header h1{font-size:1.6rem}.event-card{padding:.7rem .75rem}.event-badge{width:30px;height:30px;font-size:.85rem}.event-name,.event-days{font-size:.85rem}.family-tree-container{height:60vh}.person-box{font-size:.7rem;padding:.35rem .6rem}}
