:root{--green: #1f6f43;--green-dark: #185737;--surface: #fbfcf9;--bg: #e7ebe4;--text: #1a1c1a;--muted: #5b625b;--border: #dfe3dd;--danger: #b3261e;--tabbar-h: 4rem;--content-max: 42rem;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}button{font:inherit;cursor:pointer}.app-root{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden}.app-main{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.app-main>*{flex:1;min-height:0}.shell{min-height:0;display:flex;flex-direction:column;overflow:hidden}.shell-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;width:100%;max-width:var(--content-max);margin:0 auto;padding:1rem}.screen-title{font-size:1.5rem;margin:.5rem 0 1rem}.tabbar{flex:0 0 auto;height:var(--tabbar-h);display:flex;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.tab{flex:1;min-height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.125rem;border:none;background:none;color:var(--muted)}.tab-active{color:var(--green)}.tab-label{font-size:.75rem}@media(min-width:48rem){.shell{flex-direction:row}.tabbar{height:auto;flex-direction:column;justify-content:flex-start;gap:.25rem;width:12rem;border-top:none;border-right:1px solid var(--border);padding:1rem .5rem;overflow-y:auto}.tab{flex:0 0 auto;flex-direction:row;justify-content:flex-start;gap:.75rem;padding:0 .75rem;border-radius:.5rem}.tab-active{background:color-mix(in srgb,var(--green) 12%,transparent)}.tab-label{font-size:.95rem}.shell-body{padding-bottom:1.5rem}}.btn-primary,.btn-secondary{min-height:44px;padding:.5rem 1rem;border-radius:.5rem;border:1px solid transparent;font-weight:600}.btn-primary{background:var(--green);color:var(--surface)}.btn-primary:hover{background:var(--green-dark)}.btn-primary:disabled{opacity:.6;cursor:default}.btn-secondary{background:var(--surface);color:var(--green);border-color:var(--border)}.icon-btn{min-width:44px;min-height:44px;border:none;background:none;color:var(--muted);display:inline-flex;align-items:center;justify-content:center}.state{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:3rem 1rem;text-align:center}.state-text{color:var(--muted);margin:0}.spinner{width:2rem;height:2rem;border:3px solid var(--border);border-top-color:var(--green);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2s}}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.login{display:grid;place-items:center;padding:1rem;overflow-y:auto}.login-card{position:relative;width:100%;max-width:24rem;background:var(--surface);border:1px solid var(--border);border-radius:.75rem;padding:1.25rem}.login-close{position:absolute;top:.6rem;right:.6rem}.login-logo{display:block;margin:0 auto 1rem;max-width:72%;max-height:10.8rem;height:auto;object-fit:contain}.login form{display:flex;flex-direction:column;gap:.75rem}.login label{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem;color:var(--muted)}.login input{min-height:44px;padding:0 .75rem;border:1px solid var(--border);border-radius:.5rem;background:#fff;color:var(--text);font:inherit}.login-note{margin:-.25rem 0 0;font-size:.8rem;color:var(--muted)}.form-error{color:var(--danger);margin:0;font-size:.9rem}.login-switch{margin-top:.75rem;background:none;border:none;color:var(--green-dark);font:inherit;font-size:.9rem;text-align:center;cursor:pointer;padding:.25rem}.login-switch:disabled{opacity:.6;cursor:default}.login-or{display:flex;align-items:center;gap:.75rem;margin:1rem 0 .75rem;color:var(--muted);font-size:.85rem}.login-or:before,.login-or:after{content:"";flex:1;height:1px;background:var(--border)}.login-google{display:flex;justify-content:center;max-width:100%;overflow:hidden}.password-field{position:relative;display:flex}.password-field input{flex:1;padding-right:2.75rem}.password-toggle{position:absolute;right:0;top:0;bottom:0;width:2.75rem;display:flex;align-items:center;justify-content:center;border:none;background:none;color:var(--muted)}.profile{display:grid;grid-template-columns:auto 1fr;gap:.25rem 1rem;margin:0 0 1.5rem}.profile dt{color:var(--muted)}.profile dd{margin:0}.section-title{font-size:1.15rem;margin:1.25rem 0 .5rem}.sponsors{height:6.6rem;background:var(--surface);border-bottom:1px solid var(--border);overflow:hidden;padding:.5rem 1rem}.sponsors>a,.sponsors>.sponsor-img{display:block;width:100%;height:100%}.sponsor-img{width:100%;height:100%;object-fit:contain}.alert{display:flex;align-items:center;gap:.75rem;margin-top:.75rem;padding:.75rem;background:color-mix(in srgb,var(--green) 12%,var(--surface));border-radius:.75rem}.alert-text{flex:1}.shortcuts{display:flex;flex-direction:column;margin-top:1rem}.shortcuts-row{display:flex}.shortcut{width:4.75rem;display:flex;flex-direction:column;align-items:center;gap:.25rem;text-decoration:none;color:var(--text)}.shortcut-icon{width:3rem;height:3rem;display:grid;place-items:center;border-radius:50%;background:var(--surface);border:1px solid var(--border);color:var(--green)}.shortcut-label{font-size:.75rem;text-align:center}.happening{display:flex;flex-direction:column;gap:.5rem}.happening-card{display:flex;flex-direction:column;gap:.25rem;padding:.75rem;background:var(--surface);border:1px solid var(--border);border-radius:.75rem;text-decoration:none;color:var(--text)}.day-list section{margin-bottom:.5rem}.day-header{font-size:1rem;margin:1rem 0 .5rem}.session-card{display:flex;align-items:center;gap:.25rem;padding:.75rem;margin-bottom:.5rem;background:var(--surface);border:1px solid var(--border);border-radius:.75rem}.session-card-main{flex:1;min-width:0;display:flex;gap:.75rem;align-items:flex-start;text-decoration:none;color:var(--text)}.bookmark{color:var(--green);flex:0 0 auto}.session-time{flex:0 0 auto;font-size:.8rem;color:var(--muted);text-align:right;line-height:1.2}.session-main{display:flex;flex-direction:column;gap:.15rem;min-width:0}.session-title{font-weight:700}.session-sub{font-size:.85rem;color:var(--muted)}.type-badge{align-self:flex-start;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--green-dark);background:#e3efe7;border-radius:.35rem;padding:.05rem .4rem;margin-bottom:.1rem}.subtabs{display:flex;gap:.5rem;margin-bottom:.75rem;border-bottom:1px solid var(--border)}.subtab{flex:1;min-height:44px;border:none;background:none;color:var(--muted);font-weight:600;border-bottom:2px solid transparent}.subtab-active{color:var(--green);border-bottom-color:var(--green)}.search{width:100%;min-height:44px;padding:0 .75rem;border:1px solid var(--border);border-radius:.5rem;background:#fff;font:inherit;margin-bottom:.5rem}.chips{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.5rem}.chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:.25rem;min-height:36px;padding:0 .75rem;border-radius:1rem;border:1px solid var(--border);background:var(--surface);color:var(--text);white-space:nowrap;text-decoration:none}.chip .material-icons{font-size:1.1rem}.chip-selected{background:var(--green);color:var(--surface);border-color:var(--green)}.chip-link{color:var(--green)}.detail{width:100%;max-width:var(--content-max);margin:0 auto;padding:1rem 1rem 2rem;overflow-y:auto;overscroll-behavior:contain}.detail-actions{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;margin:1rem 0}.save-agenda{display:inline-flex;align-items:center;gap:.5rem}.detail-bar{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.detail-bar h1{font-size:1.25rem;margin:0}.detail-when{color:var(--muted);margin:.5rem 0 .25rem;font-size:.9rem}.detail-title{font-size:1.5rem;margin:0 0 .75rem}.detail-chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.detail-qa{display:inline-flex;align-items:center;gap:.5rem;text-decoration:none;width:fit-content}.detail-subject,.detail-moderator{color:var(--muted);margin:1rem 0 0}.detail-desc{margin:1rem 0 0;white-space:pre-wrap}.speaker{display:flex;align-items:center;gap:.75rem;padding:.5rem 0}.avatar{width:2.5rem;height:2.5rem;border-radius:50%;object-fit:cover;flex:0 0 auto}.avatar-fallback{display:grid;place-items:center;background:var(--green);color:var(--surface);font-weight:700;text-transform:uppercase}.checkin{margin:0}.checkin .btn-secondary{display:inline-flex;align-items:center;gap:.5rem}.checkin-msg{margin:.5rem 0 0;text-align:left}.ask-form{display:flex;flex-direction:column;gap:.5rem;margin:.5rem 0 1rem;padding:.75rem;background:var(--surface);border:1px solid var(--border);border-radius:.75rem}.ask-input{width:100%;padding:.5rem;border:1px solid var(--border);border-radius:.5rem;font:inherit;resize:vertical}.ask-anon{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:var(--muted)}.ask-ok{color:var(--green);margin:0;font-size:.9rem}.qa-list{list-style:none;margin:0;padding:0}.qa-item{display:flex;align-items:center;gap:.75rem;padding:.75rem;margin-bottom:.5rem;background:var(--surface);border:1px solid var(--border);border-radius:.75rem}.qa-main{flex:1;min-width:0}.qa-body{margin:0}.qa-meta{margin:.25rem 0 0;font-size:.85rem;color:var(--muted)}.qa-upvote{display:flex;flex-direction:column;align-items:center;min-width:44px;min-height:44px;border:1px solid var(--border);border-radius:.5rem;background:none;color:var(--green);font-size:.8rem}.qa-upvote[aria-pressed=true]{background:color-mix(in srgb,var(--green) 12%,transparent)}.qa-mod{padding:.75rem;margin-bottom:.5rem;background:var(--surface);border:1px solid var(--border);border-radius:.75rem}.qa-mod-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.qa-mod-actions .btn-primary,.qa-mod-actions .btn-secondary{min-height:40px}.row-list{list-style:none;margin:0;padding:0}.row{display:flex;align-items:center;gap:.75rem;min-height:44px;padding:.75rem;margin-bottom:.5rem;background:var(--surface);border:1px solid var(--border);border-radius:.75rem;text-decoration:none;color:var(--text)}.row-static{color:var(--muted)}.row-label{flex:1;min-width:0}.row-end{color:var(--green)}.card{display:flex;align-items:center;gap:.75rem;width:100%;padding:.875rem;margin-bottom:1rem;background:var(--surface);border:1px solid var(--border);border-radius:.75rem;text-align:left;color:var(--text)}.linked-icon{color:var(--green)}.linked-title{margin:0;font-weight:600}.linked-roles{margin:.25rem 0 0}.claim-cta{cursor:pointer}.claim-cta>div{flex:1}.claim-form{flex-direction:column;align-items:stretch}.claim-help{margin:.25rem 0 .5rem}.claim-label{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem;color:var(--muted)}.claim-label input{min-height:44px;padding:0 .75rem;border:1px solid var(--border);border-radius:.5rem;font:inherit}.claim-actions{display:flex;gap:.5rem;margin-top:.75rem}.claim-actions button{flex:1}.logout{display:inline-flex;align-items:center;gap:.5rem}.search-row{display:flex;gap:.5rem;align-items:center}.search-row .search{flex:1;margin-bottom:.5rem}.filter-btn{display:inline-flex;align-items:center;gap:.375rem;margin-bottom:.5rem;white-space:nowrap}.filter-btn-active{border-color:var(--green);color:var(--green)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:flex-end;justify-content:center;z-index:20}.modal{width:100%;max-width:32rem;background:var(--bg);border-radius:1rem 1rem 0 0;padding:1rem 1rem calc(1rem + env(safe-area-inset-bottom));max-height:85vh;overflow-y:auto}@media(min-width:32rem){.modal-overlay{align-items:center}.modal{border-radius:1rem}}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.modal-head h2{margin:0;font-size:1.25rem}.filter-select{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.75rem;font-size:.9rem;color:var(--muted)}.filter-select select{min-height:44px;padding:0 .5rem;border:1px solid var(--border);border-radius:.5rem;background:#fff;font:inherit;color:var(--text)}.filter-toggle{display:flex;align-items:center;gap:.5rem;margin:.25rem 0 1rem}.modal-actions{display:flex;gap:.75rem}.modal-actions button{flex:1}
