:root{--bg: #fdfaf4;--bg-elev: #f4ece0;--bg-press: #e7dbc7;--bg-hover: #efe4d4;--bg-hover-flat: #f8f2e8;--border: #c8b795;--text: #16222c;--text-dim: #4c5a66;--accent: #0f6a80;--accent-ink: #ffffff;--accent-wash: #e2eef1;--accent-press: #0c5a6d;--good: #1a6b4f;--bad: #a6371f;--bad-bg: #fdf3f1;--bad-border: #e0bdb5;--hairline: #e0d2b8;--r: 18px;--r-lg: 20px;--tap: 3.2rem}html{font-size:20px}:root[data-text=large]{font-size:23px}:root[data-text=xlarge]{font-size:26px}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--bg);color:var(--text);background-image:linear-gradient(180deg,#eaf3f5 0%,#f7f1e6 34%,var(--bg) 62%);background-attachment:fixed;background-repeat:no-repeat;font-family:Hanken Grotesk,system-ui,-apple-system,sans-serif;line-height:1.45;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}h1,h2,h3{margin:0;font-weight:700;letter-spacing:-.01em;overflow-wrap:anywhere}h1{font-size:1.5rem}h2{font-size:1.15rem}a,button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{font:inherit;font-weight:600;color:inherit;background:var(--bg-elev);border:2px solid var(--border);border-radius:var(--r);padding:14px 20px;cursor:pointer}button:active{background:var(--bg-press)}button:disabled{opacity:.5}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}@media(hover:hover){button:hover{background:var(--bg-press)}button.primary:hover{background:var(--accent-press);border-color:var(--accent-press)}}input,select,textarea{font:inherit;font-size:max(16px,.8rem);color:var(--text);background:var(--bg);border:2px solid var(--border);border-radius:10px;padding:10px 12px;min-width:0;width:100%}input:focus,select:focus,textarea:focus{outline:3px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.tile:focus-visible,.person .call:focus-visible,.person .extras button:focus-visible,.info-item:focus-visible,.help-item:focus-visible,.back-pill:focus-visible,.tabs button:focus-visible{outline:3px solid var(--accent);outline-offset:1px}.shell{min-height:100%;display:flex;flex-direction:column}.page{flex:1;width:100%;max-width:640px;margin:0 auto;padding:20px 16px calc(var(--tap) + 46px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:18px}.page>header{padding-top:env(safe-area-inset-top);padding-bottom:14px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='8' viewBox='0 0 72 8'%3E%3Cpath d='M0 5c6-5 12-5 18 0s12 5 18 0 12-5 18 0 12 5 18 0' fill='none' stroke='%230f6a80' stroke-opacity='.35' stroke-width='2'/%3E%3C/svg%3E") left bottom repeat-x}.page>header h1{font-size:1.8rem;letter-spacing:-.015em}.page>header.home{display:flex;align-items:baseline;justify-content:space-between;gap:24px}.page>header .today{flex:0 0 auto;font-size:1rem;font-weight:600;color:var(--text-dim)}.muted{color:var(--text-dim);font-size:.85rem}.banner{display:flex;align-items:center;gap:14px;background:#fdf2d0;border:2px solid #d9b34a;border-radius:var(--r);padding:16px 20px;font-size:.95rem;font-weight:600;color:#4a3a12}.banner .ico{flex:0 0 auto;display:flex;color:#8a6a12}.banner span{flex:1}.banner.error{background:#fdeceb;border-color:#e0a19c;color:var(--bad)}.banner.error .ico{color:var(--bad)}.banner .call-btn{flex:0 0 auto;display:flex;align-items:center;gap:10px;min-height:56px;background:var(--accent);border:2px solid var(--accent);color:var(--accent-ink);border-radius:999px;padding:12px 22px;font-size:.9rem;font-weight:700}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:46px 24px;background:var(--bg-hover-flat);border:2px dashed var(--border);border-radius:var(--r-lg)}.empty-title{font-size:1.15rem;font-weight:700}.empty-sub{font-size:.95rem;color:var(--text-dim)}.tabs{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--bg-elev);border-top:2px solid var(--border);padding-bottom:env(safe-area-inset-bottom);z-index:10}.tabs button{flex:1;min-width:0;min-height:var(--tap);border:0;border-radius:0;background:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px 2px;font-size:.75rem;color:var(--text-dim)}.tabs button .ico{display:flex;line-height:1}.tabs button .ico svg{width:26px;height:26px}.tabs button[aria-current=page]{color:var(--accent);font-weight:700;box-shadow:inset 0 3px 0 var(--accent)}.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,9.5rem),1fr));gap:14px}.tile{min-height:9rem;border-radius:var(--r-lg);padding:20px;box-shadow:0 2px #7a603021;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;font-size:1.15rem;font-weight:700;line-height:1.2;overflow-wrap:anywhere}.tile .ico{flex:0 0 auto;width:64px;height:64px;border-radius:50%;background:var(--accent-wash);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:2rem;line-height:1}.tile .ico svg{width:34px;height:34px}.person{border:2px solid var(--border);border-radius:var(--r-lg);background:var(--bg);box-shadow:0 2px #7a603021;overflow:hidden}.person .call{width:100%;min-height:96px;display:flex;align-items:center;gap:16px;border:0;border-radius:0;background:var(--bg);text-align:left;padding:16px 20px}.avatar{flex:0 0 auto;width:3.1rem;height:3.1rem;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;font-size:1.2rem;font-weight:700;object-fit:cover}.person .who{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.person .who .nm{font-size:1.25rem;font-weight:700;overflow-wrap:anywhere}.person .who .rel{font-size:.9rem;font-weight:500;color:var(--text-dim)}.person .go{flex:0 0 auto;display:flex;align-items:center;gap:8px;color:var(--accent);font-size:.9rem;font-weight:700}.person .extras{display:flex;border-top:2px solid var(--border)}.person .extras button{flex:1;min-width:0;min-height:68px;border:0;border-radius:0;background:var(--bg-elev);display:flex;align-items:center;justify-content:center;gap:10px;font-size:.9rem;font-weight:600}.person .extras button+button{border-left:2px solid var(--border)}.info-list .group{display:flex;flex-direction:column;gap:12px}.info-list .group h2{margin-bottom:0;font-size:1rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim)}.info-list .items{display:flex;flex-direction:column;gap:14px}.info-item{width:100%;min-height:96px;display:flex;align-items:center;gap:16px;text-align:left;padding:16px 20px;border-radius:var(--r-lg);box-shadow:0 2px #7a603021}.info-item .fields{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.info-item .val{font-family:JetBrains Mono,ui-monospace,monospace;font-size:1.4rem;font-weight:600;overflow-wrap:anywhere}.info-item .lbl{font-size:.9rem;font-weight:600;color:var(--text-dim)}.info-item .note{font-size:.85rem;color:var(--text-dim)}.copy-cta,.copied{flex:0 0 auto;display:flex;align-items:center;gap:8px;font-size:.9rem;font-weight:700}.copy-cta{color:var(--accent)}.copied{color:var(--good)}.help-list{display:flex;flex-direction:column;gap:16px}.help-item{width:100%;min-height:88px;display:flex;align-items:center;gap:18px;text-align:left;padding:18px 22px;border-radius:var(--r-lg);box-shadow:0 2px #7a603021}.help-item .who{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.help-item .ttl{font-size:1.25rem;font-weight:700}.help-item .cnt{font-size:.85rem;font-weight:500;color:var(--text-dim)}.help-item .chev{flex:0 0 auto;display:flex;color:var(--accent)}.back-pill{align-self:flex-start;display:flex;align-items:center;gap:10px;border-radius:999px;padding:12px 22px 12px 18px;font-size:.95rem;font-weight:600}.steps{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:20px}.steps li{display:flex;align-items:flex-start;gap:18px}.steps li .n{flex:0 0 auto;width:44px;height:44px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;font-size:1.05rem;font-weight:700}.steps li .body{flex:1;min-width:0;display:flex;flex-direction:column;gap:12px;padding-top:6px;font-size:1.15rem}.steps li .body span{max-width:62ch}.steps img{max-width:100%;border:2px solid var(--border);border-radius:var(--r)}.group h2{margin-bottom:10px}.choice-row{display:flex;flex-wrap:wrap;gap:10px}.choice-row button{flex:1 1 auto;min-width:7rem;min-height:var(--tap)}.page.login{max-width:none;align-items:center;justify-content:center;padding:40px 20px}.login-card{width:100%;max-width:460px;display:flex;flex-direction:column;gap:24px;background:var(--bg);border:2px solid var(--border);border-radius:24px;padding:36px;box-shadow:0 3px #7a603021}.login-card .brand{display:flex;align-items:center;gap:16px}.login-card .brand h1{font-size:1.7rem;letter-spacing:-.015em}.login-card form{display:flex;flex-direction:column;gap:18px}.login-card label{display:flex;flex-direction:column;gap:8px;font-size:.9rem;font-weight:600;color:var(--text-dim)}.login-card input{font-size:max(16px,.9rem);padding:14px;border-radius:12px}.login-card button[type=submit]{min-height:64px;font-size:1.05rem;font-weight:700}.login-card p{margin:0;font-size:.9rem;color:var(--text-dim);text-wrap:pretty}.admin-bar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 16px;padding:16px 28px;padding-top:calc(16px + env(safe-area-inset-top));background:var(--bg-elev);border-bottom:2px solid var(--border);font-size:15px}.admin-bar .who{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}.admin-bar strong{font-size:22px}.admin-bar .hint{font-size:15px;color:var(--text-dim)}.admin-bar .right{display:flex;align-items:center;gap:10px}.admin-bar .build{font-family:JetBrains Mono,ui-monospace,monospace;font-size:13px;color:#6b6155}.admin-bar a{font-size:15px;font-weight:600;color:var(--accent);text-decoration:none}.admin-bar button{min-height:38px;padding:6px 14px;font-size:15px;border-radius:999px;background:var(--bg)}.admin{max-width:940px;padding:24px 28px 48px;gap:30px;font-size:15px}.admin section{display:flex;flex-direction:column;gap:8px}.admin .sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding-bottom:6px;border-bottom:2px solid var(--border)}.admin .sec-head h2{font-size:19px}.admin .sec-head span{font-size:14px;color:var(--text-dim)}.admin .row{display:grid;gap:8px;align-items:center;padding:7px 0;border-top:1px solid var(--hairline)}.admin .row.head{padding:4px 0;border-top:0;font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:#6b6155}.admin .row.add{padding:10px 0 4px;border-top:2px solid var(--border)}.admin .row.plain{display:flex;flex-wrap:wrap;border-top:0}.admin{--acts: 224px}.g-tiles{grid-template-columns:58px 1.1fr 2fr 78px var(--acts)}.g-people{grid-template-columns:1fr 1fr 1.2fr 1.2fr 74px var(--acts)}.g-info{grid-template-columns:.8fr 1fr 1.2fr 1.2fr var(--acts)}.g-step{grid-template-columns:28px 1fr 160px 34px}.admin .row .acts{display:flex;align-items:center;gap:6px;min-width:0}.admin .row.add>button{justify-self:start}.admin code{font-family:JetBrains Mono,ui-monospace,monospace;font-size:13px}.admin input,.admin select,.admin textarea{font-size:15px;border-width:1px;border-radius:8px;padding:8px}.admin .mono{font-family:JetBrains Mono,ui-monospace,monospace;font-size:13px}.admin .center{text-align:center}.admin input[type=checkbox]{width:20px;height:20px;justify-self:center}.admin input[type=file]{padding:4px;font-size:12px;border-style:dashed;background:var(--bg-hover-flat)}.admin textarea{font-family:JetBrains Mono,ui-monospace,monospace;font-size:14px;min-height:74px;background:var(--bg-hover-flat)}.admin button{min-height:36px;padding:6px 12px;font-size:14px;border-width:1px;border-radius:8px}.admin button.icon-btn{width:34px;padding:0;color:var(--text-dim)}.admin button.danger{background:var(--bad-bg);border-color:var(--bad-border);color:var(--bad)}.admin button.ghost{border-style:dashed;background:var(--bg-hover-flat);color:var(--text-dim);font-size:13px;min-height:34px}.admin .push{margin-left:auto}@media(hover:hover){.admin button.danger:hover{background:#f8e3de}}.admin .stack{display:flex;flex-direction:column;gap:10px;border:1px solid var(--border);border-radius:12px;padding:14px;background:var(--bg)}.admin .stack .row{padding:0;border-top:0}.admin .stack strong{font-family:JetBrains Mono,ui-monospace,monospace;font-size:15px}.admin .stack .ttl{font-size:16px;font-weight:700}.admin .n{font-size:13px;color:#6b6155;text-align:right}.admin .banner{font-size:15px;font-weight:600;padding:10px 14px;border-radius:10px}@media(min-width:840px){.shell{padding-left:128px}.shell.no-rail{padding-left:0}.page{max-width:1040px;padding:34px 36px 40px;gap:26px}.page.admin{padding:24px 28px 48px}.tabs{top:0;right:auto;width:128px;flex-direction:column;justify-content:flex-start;gap:8px;border-top:0;border-right:2px solid var(--border);padding:calc(env(safe-area-inset-top) + 20px) 0 calc(env(safe-area-inset-bottom) + 20px)}.tabs button{flex:0 0 auto;min-height:92px;gap:6px;padding:8px 4px;font-size:.8rem}.tabs button .ico svg{width:30px;height:30px}.tabs button[aria-current=page]{box-shadow:inset 4px 0 0 var(--accent);background:var(--bg)}.tile-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.tile{min-height:220px}.tile .ico{width:84px;height:84px}.tile .ico svg{width:44px;height:44px}.people-grid{columns:2;column-gap:18px}.person{break-inside:avoid;margin-bottom:18px}.info-list{columns:2;column-gap:20px}.info-list .group{break-inside:avoid;margin-bottom:20px}.steps img{max-width:520px}}@media(max-width:839px){.admin input,.admin select,.admin textarea{font-size:16px}.admin input[type=file]{font-size:12px}.admin .row{grid-template-columns:1fr}.admin-bar{padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top))}}@media(hover:hover){.tile:hover,.info-item:hover,.help-item:hover,.back-pill:hover,.person .extras button:hover{background:var(--bg-hover)}.person .call:hover{background:var(--bg-hover-flat)}.banner .call-btn:hover{background:var(--accent-press);border-color:var(--accent-press)}}@media(prefers-reduced-motion:reduce){*{animation-duration:1ms!important;transition-duration:1ms!important}}
