:root{--ink:#18231d;--muted:#667068;--paper:#f7f5ef;--card:#fff;--line:#e4e2da;--green:#19764a;--green-soft:#e0f2e8;--yellow:#9a6810;--yellow-soft:#fff0be;--red:#b13b36;--red-soft:#fde5e2;--accent:#126946}*{box-sizing:border-box}html{background:var(--paper);color:var(--ink);font-family:Inter,Noto Sans TC,Microsoft JhengHei,sans-serif;overflow-x:clip}body{min-width:0;padding-bottom:env(safe-area-inset-bottom);margin:0;overflow-x:clip}button,input,textarea,select{font:inherit}button{cursor:pointer}.app-header{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);z-index:20;background:#f7f5eff0;grid-template-columns:1fr auto 1fr;align-items:center;height:62px;padding:0 max(16px,50vw - 460px);display:grid;position:sticky;top:0}.brand{color:var(--ink);background:0 0;border:0;align-items:center;gap:8px;padding:0;font-size:17px;font-weight:800;display:flex}.brand-mark{background:var(--ink);color:#fff;border-radius:11px;place-items:center;width:34px;height:34px;display:grid}.header-title{white-space:nowrap;text-overflow:ellipsis;max-width:42vw;font-weight:700;overflow:hidden}.header-action{justify-self:end}.text-button,.admin-link{color:var(--accent);background:0 0;border:0;font-weight:700}.page-shell{width:min(100%,760px);min-width:0;padding:24px 16px calc(112px + env(safe-area-inset-bottom));margin:auto}.loading{place-items:center;height:100vh;display:grid}.welcome{padding:42px 4px 38px}.kicker,.eyebrow{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;font-size:13px;font-weight:800}.welcome h1{letter-spacing:-.05em;max-width:680px;margin:14px 0;font-size:clamp(36px,10vw,64px);line-height:1.02}.welcome p{color:var(--muted);max-width:540px;font-size:18px;line-height:1.7}.primary{background:var(--accent);color:#fff;border:0;border-radius:12px;padding:13px 19px;font-weight:800;box-shadow:0 5px 14px #12694625}.primary:hover{background:#0c593b}.primary:disabled{opacity:.35;cursor:not-allowed}.primary.large{padding:16px 23px;font-size:17px}.section-head,.page-title{justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.section-head h2,.page-title h1{margin:0}.section-head span,.section-head p{color:var(--muted);margin:4px 0;font-size:13px}.recent{gap:10px;display:grid}.event-card{text-align:left;border:1px solid var(--line);background:var(--card);border-radius:16px;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;width:100%;padding:14px;display:grid}.event-card strong,.event-card small{display:block}.event-card small{color:var(--muted);margin-top:4px}.event-icon{background:var(--green-soft);width:42px;height:42px;color:var(--green);border-radius:12px;place-items:center;font-weight:900;display:grid}.event-icon.mode-time{background:var(--yellow-soft);color:var(--yellow)}.chevron{color:#8a938d;font-size:25px}.reset{color:var(--muted);background:0 0;border:0;margin:36px auto;text-decoration:underline;display:block}.card,.form-card,.hero-card,.identity-page .card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:20px;box-shadow:0 4px 20px #1b261c0a}.stack{gap:14px;margin-top:18px;display:grid}.form-card{max-width:600px;margin:20px auto}.form-card h1{margin:8px 0 25px;font-size:30px}.steps{gap:8px;margin-bottom:24px;display:flex}.steps span{background:var(--line);border-radius:10px;flex:1;height:5px;font-size:0}.steps span.active{background:var(--accent)}label{gap:7px;margin:15px 0;font-weight:700;display:grid}input,textarea,select{background:#fff;border:1px solid #cfd3cd;border-radius:11px;outline:none;width:100%;padding:13px}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #12694618}textarea{resize:vertical;min-height:92px}.two-col,.mode-picker{grid-template-columns:1fr 1fr;gap:12px;display:grid}.mode-picker button{border:2px solid var(--line);text-align:left;background:#fff;border-radius:16px;padding:20px}.mode-picker button.selected{border-color:var(--accent);background:var(--green-soft)}.mode-picker b,.mode-picker span{display:block}.mode-picker b{font-size:18px}.mode-picker span{color:var(--muted);margin-top:8px;line-height:1.5}.form-actions{border-top:1px solid var(--line);justify-content:flex-end;gap:10px;margin-top:28px;padding-top:18px;display:flex}.form-actions>button:not(.primary),.danger-zone button,.undo-row button,.page-title>button{border:1px solid var(--line);background:#fff;border-radius:11px;padding:11px 15px}.preview{background:var(--paper);border-radius:14px;padding:18px}.identity-page{max-width:560px;margin:auto}.event-intro{text-align:center;padding:35px 10px}.event-intro h1{margin:9px;font-size:35px}.event-intro p{color:var(--muted)}.identity-page .card h2{margin-bottom:5px}.identity-page .card>p{color:var(--muted);margin-top:0}.people{gap:8px;margin:20px 0;display:grid}.people button{text-align:left;border:1px solid var(--line);background:#fff;border-radius:12px;grid-template-columns:auto 1fr auto;align-items:center;padding:10px;font-weight:700;display:grid}.people button>span{background:var(--green-soft);width:36px;height:36px;color:var(--green);border-radius:50%;place-items:center;margin-right:10px;display:grid}.people i{color:#999;font-size:22px;font-style:normal}.divider{background:var(--line);height:1px;margin:26px 0;position:relative}.divider span{color:var(--muted);background:#fff;padding:0 10px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.input-action{gap:8px;display:flex}.event-banner{color:#fff;background:#173c2d;border-radius:20px;padding:24px}.event-banner span{opacity:.65;font-weight:700}.event-banner h1{margin:6px 0}.event-banner p{opacity:.78;margin-bottom:0}.identity{background:var(--green-soft);border-radius:14px;justify-content:space-between;align-items:center;padding:13px 16px;display:flex}.identity span,.identity strong{display:block}.identity span{color:var(--muted);font-size:12px}.quick-actions,.toolbox{gap:7px;padding:8px 0 12px;display:flex;overflow:auto}.quick-actions button,.toolbox .status{white-space:nowrap;border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px}.date-list{gap:10px;display:grid}.date-card{border:1px solid var(--line);background:#fff;border-radius:14px;padding:16px}.date-card>strong{margin-bottom:13px;display:block}.status-group{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.status{border:1px solid var(--line);background:#fff;border-radius:10px;justify-content:center;gap:5px;padding:9px 6px;font-weight:700;display:flex}.status-ok.selected,.toolbox .status-ok.selected{border-color:var(--green);background:var(--green-soft);color:var(--green)}.status-flexible.selected,.toolbox .status-flexible.selected{border-color:var(--yellow);background:var(--yellow-soft);color:#755000}.status-no.selected,.toolbox .status-no.selected{border-color:var(--red);background:var(--red-soft);color:var(--red)}.time-grid{touch-action:none;overscroll-behavior:contain;-webkit-user-select:none;user-select:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;display:grid}.time-cell{border:1px solid var(--line);background:#fff;border-radius:11px;justify-content:space-between;gap:6px;min-width:0;min-height:48px;padding:12px;display:flex}.cell-ok{color:var(--green);background:var(--green-soft)!important}.cell-flexible{color:#755000;background:var(--yellow-soft)!important}.cell-no{color:var(--red);background:var(--red-soft)!important}.cell-unanswered{color:#747a75;background:#f1f1ee!important}.undo-row{justify-content:space-between;margin-top:12px;display:flex}.undo-row button{color:var(--muted)}.save-bar{bottom:calc(10px + env(safe-area-inset-bottom));border:1px solid var(--line);background:#fff;border-radius:15px;justify-content:space-between;align-items:center;gap:10px;padding:12px;display:flex;position:sticky;box-shadow:0 12px 35px #13261a25}.save-bar span{color:var(--muted);font-size:13px}.toast{z-index:40;color:#fff;background:#163d2d;border-radius:12px;padding:12px 14px;position:fixed;top:74px;left:50%;transform:translate(-50%);box-shadow:0 8px 30px #0003}.toast button{color:#fff;background:0 0;border:0;margin-left:16px}.summary-strip{color:var(--muted);font-size:14px}.summary-strip strong{color:var(--ink)}.hero-card{background:linear-gradient(145deg,#e8f6ed,#fff 70%)}.hero-card h2{margin:8px 0;font-size:30px}.count-row{flex-wrap:wrap;gap:12px;font-size:14px;display:flex}.text-ok{color:var(--green)}.text-flex{color:var(--yellow)}.text-no{color:var(--red)}.badge,.mini-badge{background:var(--green);color:#fff;border-radius:99px;margin-top:13px;padding:5px 9px;font-size:12px;font-weight:800;display:inline-block}.badge.warn{background:var(--red)}.hero-card p{color:var(--muted);line-height:1.55}.rank-row{border-bottom:1px solid var(--line);grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:14px 0;display:grid}.rank-row:last-child{border:0}.rank-num{background:var(--paper);border-radius:50%;place-items:center;width:28px;height:28px;font-weight:800;display:grid}.rank-row strong,.rank-row small{display:block}.rank-row small{color:var(--muted);margin-top:5px}.mini-badge{color:var(--muted);background:#eef0ec;margin:0}.results-matrix-scroll{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;touch-action:pan-x pan-y;-webkit-user-select:none;user-select:none;width:100%;max-width:100%;margin:12px 0 0;overflow:auto hidden}.results-matrix-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:13px}.results-matrix-table th,.results-matrix-table td{border-top:1px solid var(--line);text-align:center;white-space:pre-line;padding:10px}.results-matrix-table th:not(:first-child),.results-matrix-table td:not(:first-child){min-width:112px}.results-matrix-table th:first-child{z-index:2;text-align:left;min-width:112px;max-width:112px;box-shadow:1px 0 var(--line);background:#fff;position:sticky;left:0}.results-matrix-table thead th:first-child{z-index:3}.matrix-scroll-hint{white-space:nowrap}.cell{border-radius:7px;place-items:center;min-width:46px;padding:5px;font-weight:900;display:grid}.cell small{font-size:9px;display:block}.confirmed{color:#fff;background:#163d2d;border-radius:18px;padding:20px}.confirmed h2{margin:7px 0;font-size:26px}.confirmed p{opacity:.7;margin-bottom:0}.page-title{margin:15px 0 20px}.page-title h1{font-size:32px}.state{border-radius:99px;padding:7px 10px;font-size:13px;font-weight:800}.state-open{background:var(--green-soft);color:var(--green)}.state-confirmed{color:#34599a;background:#e4edff}.state-closed{color:#666;background:#eee}.admin-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.admin-grid button{border:1px solid var(--line);text-align:left;background:#fff;border-radius:15px;padding:16px;font-size:22px}.admin-grid b,.admin-grid span{display:block}.admin-grid b{margin:10px 0 3px;font-size:15px}.admin-grid span{color:var(--muted);font-size:12px}.danger-zone{border-top:1px solid var(--line);margin-top:25px;padding-top:15px}.danger-zone button{margin-right:8px}.admin-link{margin:26px auto;text-decoration:underline;display:block}.dev-panel{background:#eef6f1;border:1px dashed #8aa898;border-radius:18px;margin-top:24px;padding:18px}.dev-panel h2{margin:6px 0}.dev-panel p{color:var(--muted);margin-top:0}.dev-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.dev-actions button{border:1px solid var(--line);background:#fff;border-radius:11px;min-height:48px;font-weight:700}.dev-panel .reset{margin:16px 0 0}.editor{padding-bottom:12px}button,input,textarea,select{min-height:44px}.toast{max-width:calc(100vw - 24px)}@media (min-width:720px){.page-shell{padding-top:38px}.date-list{grid-template-columns:1fr 1fr}.time-grid{grid-template-columns:repeat(4,1fr)}.welcome{padding-top:70px}.event-intro{padding-top:60px}}@supports (padding:max(0px)){.app-header{padding-top:env(safe-area-inset-top);height:calc(62px + env(safe-area-inset-top))}}@media (max-width:480px){.brand>span:last-child{display:none}.app-header{grid-template-columns:60px 1fr 90px}.header-title{text-align:center;max-width:none}.page-shell{padding-left:12px;padding-right:12px}.mode-picker{grid-template-columns:1fr}.status-group{gap:4px}.status{font-size:13px}.hero-card h2{font-size:25px}.mini-badge{display:none}.save-bar .primary{padding-left:12px;padding-right:12px}.page-title{align-items:flex-start}.page-title h1{overflow-wrap:anywhere}.two-col,.dev-actions{grid-template-columns:1fr}.input-action,.input-action input{min-width:0}}.multi-calendar{width:100%;min-width:0}.calendar-header{grid-template-columns:minmax(74px,1fr) auto minmax(74px,1fr);align-items:center;gap:6px;margin-bottom:12px;display:grid}.calendar-header>div{text-align:center;min-width:120px}.calendar-header h3{margin:0;font-size:20px}.calendar-header small{color:var(--muted)}.calendar-header button{border:1px solid var(--line);background:#fff;border-radius:11px;min-height:46px;padding:8px;font-weight:700}.calendar-header button:first-child{justify-self:start}.calendar-header button:nth-of-type(2){justify-self:end}.calendar-header button span{margin:0 4px;font-size:12px}.calendar-header .calendar-today{min-height:40px;color:var(--accent);grid-column:1/-1;justify-self:center;padding:7px 14px}.calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;width:100%;display:grid}.calendar-weekday{height:30px;color:var(--muted);place-items:center;font-size:13px;font-weight:800;display:grid}.calendar-empty{min-width:0}.calendar-day{aspect-ratio:1;min-width:0;min-height:42px;color:var(--ink);background:0 0;border:1px solid #0000;border-radius:12px;place-items:center;padding:0;font-weight:700;display:grid;position:relative}.calendar-day:hover:not(:disabled){background:#eef5f0}.calendar-day.today{border-color:var(--accent)}.calendar-day.selected{background:var(--accent);color:#fff;box-shadow:inset 0 0 0 1px #fff4}.calendar-day.selected b{font-size:10px;position:absolute;top:1px;right:3px}.calendar-day:disabled{color:#a9aea9;cursor:not-allowed;opacity:.55;text-decoration:line-through}.calendar-quick{flex-wrap:wrap;gap:7px;margin:15px 0;display:flex}.calendar-quick button{border:1px solid var(--line);background:#fff;border-radius:10px;flex:132px;min-height:42px;padding:8px;font-size:13px;font-weight:700}.selected-summary{background:var(--paper);border-radius:14px;margin-top:16px;padding:15px}.selected-summary h3{margin:0 0 10px}.selected-summary>p{color:var(--muted);margin-bottom:0}.selected-month{margin-top:13px}.selected-month h4{color:var(--muted);margin:0 0 5px;font-size:13px}.selected-date{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;min-height:44px;display:flex}.selected-date span{font-weight:700}.selected-date button{color:var(--red);background:0 0;border:0;font-weight:700}.form-error{background:var(--red-soft);color:#8e2925;border-radius:10px;padding:10px 12px;font-weight:700}.form-help{color:var(--muted);line-height:1.6}@media (max-width:400px){.calendar-header{grid-template-columns:70px 1fr 70px}.calendar-header button span{display:none}.calendar-header>div{min-width:0}.calendar-grid{gap:2px}.calendar-day{border-radius:10px;min-height:40px}.calendar-quick button{flex-basis:112px}.selected-date span{font-size:14px}}.share-backdrop{z-index:60;padding:12px;padding-bottom:calc(12px + env(safe-area-inset-bottom));background:#10201980;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.share-sheet{background:#fff;border-radius:20px;width:min(100% - 24px,520px);max-width:100%;max-height:calc(100dvh - 24px);padding:20px;overflow-y:auto;box-shadow:0 20px 60px #0004}.share-sheet-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.share-sheet-head h2{overflow-wrap:anywhere;margin:5px 0}.share-sheet-head>button{background:var(--paper);border:0;border-radius:50%;flex:0 0 44px;width:44px;font-size:24px}.share-sheet p,.share-sheet small{color:var(--muted)}.share-sheet small{line-height:1.5;display:block}.share-url{width:100%;min-width:0;max-width:100%;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px;overflow-x:auto}.share-actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:18px;display:grid}.share-actions button:not(.primary){border:1px solid var(--line);background:#fff;border-radius:12px;font-weight:800}.shared-event-page{place-items:center;min-height:100dvh;padding:20px;display:grid}.shared-event-page .card{max-width:520px}.shared-event-page a{color:var(--accent);margin-top:10px;font-weight:800;display:inline-block}@media (min-width:700px){.share-backdrop{align-items:center}}@media (max-width:360px){.share-sheet{padding:16px}.share-actions{grid-template-columns:1fr}}.home-actions{flex-wrap:wrap;gap:10px;display:flex}.home-actions>button:not(.primary){border:1px solid var(--line);background:#fff;border-radius:12px;padding:13px 18px;font-weight:700}.event-section{gap:12px;margin:34px 0;display:grid}.empty-state{border:1px dashed var(--line);text-align:center;color:var(--muted);background:#ffffff80;border-radius:16px;padding:24px}.error-banner{z-index:35;background:var(--red-soft);color:var(--red);border:1px solid #efb9b5;border-radius:12px;margin-bottom:12px;padding:12px 14px;position:sticky;top:72px}.error-banner button{float:right;color:inherit;background:0 0;border:0}.loading-inline{text-align:center;color:var(--muted);padding:8px}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.auth-tabs{grid-template-columns:1fr 1fr;gap:8px;margin:0 0 12px;display:grid}.auth-tabs button{border:1px solid var(--line);background:#fff;border-radius:12px;padding:11px;font-weight:800}.auth-tabs button.active{background:var(--green-soft);border-color:var(--accent);color:var(--accent)}.no-recovery{background:var(--yellow-soft);color:#674600;border-radius:12px;gap:4px;margin:16px 0;padding:13px;display:grid}.no-recovery span{font-size:13px;line-height:1.5}.event-description{opacity:.9;white-space:pre-wrap;font-size:16px;line-height:1.6}
