@font-face{font-family:Anuphan;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/anuphan-thai-400-normal-CYPG-7cc.woff2) format("woff2"),url(/assets/anuphan-thai-400-normal-B8wWdyvX.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Anuphan;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/anuphan-vietnamese-400-normal-FcZRxsvJ.woff2) format("woff2"),url(/assets/anuphan-vietnamese-400-normal-xZfYJPys.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Anuphan;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/anuphan-latin-ext-400-normal-CCaRbzGi.woff2) format("woff2"),url(/assets/anuphan-latin-ext-400-normal-ZaQJ1nhL.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Anuphan;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/anuphan-latin-400-normal-BQH10Ma6.woff2) format("woff2"),url(/assets/anuphan-latin-400-normal-BDYevJ6X.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Anuphan;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/anuphan-thai-500-normal-CZoh8WWr.woff2) format("woff2"),url(/assets/anuphan-thai-500-normal-DOsDZgfO.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Anuphan;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/anuphan-vietnamese-500-normal-CBsphc3_.woff2) format("woff2"),url(/assets/anuphan-vietnamese-500-normal-ewe65ly5.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Anuphan;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/anuphan-latin-ext-500-normal-Y75EY0_0.woff2) format("woff2"),url(/assets/anuphan-latin-ext-500-normal-cib8PPgw.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Anuphan;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/anuphan-latin-500-normal-DE4mzdQz.woff2) format("woff2"),url(/assets/anuphan-latin-500-normal-B9L7_HnD.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Anuphan;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/anuphan-thai-700-normal-rOsLv-jZ.woff2) format("woff2"),url(/assets/anuphan-thai-700-normal-B9xfo8qq.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Anuphan;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/anuphan-vietnamese-700-normal-CEKCPHv1.woff2) format("woff2"),url(/assets/anuphan-vietnamese-700-normal-Bt-kD8dc.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Anuphan;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/anuphan-latin-ext-700-normal-BDcT6wBH.woff2) format("woff2"),url(/assets/anuphan-latin-ext-700-normal-C5WMEDsH.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Anuphan;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/anuphan-latin-700-normal-WxQNlaBM.woff2) format("woff2"),url(/assets/anuphan-latin-700-normal-D1LjmPNx.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #F7F5F2;--surface: #FFFFFF;--surface-2: #FBFAF8;--ink: #161514;--ink-2: #5C5953;--ink-3: #8E8A82;--line: #E8E4DD;--line-2: #D9D4CC;--stone: #EFEBE4;--fitup: #DE2826;--done: #2E7D32;--late: #B8651B;--late-tint: #F6E9DC;--upcoming: #CFC9BF;--brand-solid: #DE2826;--on-brand: #FFFFFF;--brand-ink: #B71F1D;--brand-tint: #FBE9E9;--brand-wash: #F7F5F2;--accent: #DE2826;--accent-tint: #FBE9E9;--progress: #161514;--progress-track: rgba(22,21,20,.18);--avatar: #161514;--on-avatar: #FFFFFF;--pill-ip-bg: #161514;--pill-ip-fg: #FFFFFF;--focus: #161514;--r-card: 16px;--r-sheet: 20px;--gutter: 16px;--maxw: 1200px;--topbar-h: 56px;--font: "Anuphan", system-ui, -apple-system, "Segoe UI", sans-serif;--shadow-sheet: 0 12px 40px rgba(20,20,20,.14);--t: .16s ease-out}@media(min-width:768px){:root{--gutter: 32px}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scrollbar-gutter:stable}body{margin:0;min-height:100dvh;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.6;font-variant-numeric:lining-nums tabular-nums;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased}h1,h2,h3,p{margin:0}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}a{color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:6px}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 max(var(--gutter),env(safe-area-inset-right)) 0 max(var(--gutter),env(safe-area-inset-left))}.eyebrow{font-size:12px;font-weight:500;color:var(--ink-3);line-height:16px}.eyebrow .lat{letter-spacing:.12em;text-transform:uppercase}.meta{font-size:13px;line-height:20px;color:var(--ink-2)}.muted{color:var(--ink-3)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}.app{min-height:100dvh;display:flex;flex-direction:column;background:linear-gradient(180deg,var(--brand-wash) 0,var(--bg) 360px)}.app>main{flex:1 0 auto}.topbar{height:calc(var(--topbar-h) + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);border-bottom:1px solid var(--line);background:var(--brand-wash);position:sticky;top:0;z-index:20}.topbar .wrap{height:100%;display:flex;align-items:center;justify-content:space-between;gap:12px}.topbar-end{display:inline-flex;align-items:center;gap:12px;flex:none}.lockup{display:inline-flex;align-items:center;gap:12px;min-width:0}.plate{display:inline-flex;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:5px 10px;height:40px;max-width:160px;flex:none}.plate[data-bg=dark]{background:var(--ink);border-color:var(--ink)}.plate img{display:block;height:100%;width:auto;max-width:140px;object-fit:contain}.plate.sm{height:32px;padding:4px 8px;border-radius:8px}.plate.lg,.plate.xl{height:auto;max-width:100%}.plate.lg img,.plate.xl img{width:var(--lw-s);height:var(--lh-s);max-width:100%}.plate.lg{padding:12px 18px;border-radius:16px}.plate.xl{padding:14px 20px;border-radius:16px;box-shadow:0 1px 2px #1414140a,0 10px 28px #14141412}@media(min-width:768px){.plate.xl{padding:20px 28px;border-radius:20px}.plate.xl img{width:var(--lw);height:var(--lh)}}.hero-logo{display:flex;flex:none;margin-bottom:22px}.hero-id{min-width:0}@media(min-width:768px){.hero-head{display:flex;align-items:center;gap:32px}.hero-head .hero-logo{margin-bottom:0}.hero-head .hero-id h1{margin:8px 0 10px}}.topbar-brand{display:flex;min-width:0;transition:opacity var(--t),transform var(--t)}.topbar-brand.is-tucked{opacity:0;transform:translateY(6px);pointer-events:none}.monogram{width:40px;height:40px;border-radius:50%;background:var(--avatar);color:var(--on-avatar);font-weight:700;font-size:17px;display:inline-flex;align-items:center;justify-content:center;flex:none}.monogram.lg{width:64px;height:64px;font-size:26px}.monogram.sm{width:32px;height:32px;font-size:14px}.lockup .name{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:42vw}.by-quiet{display:inline-flex;align-items:baseline;gap:5px;font-size:12px;color:var(--ink-3);white-space:nowrap}.by-quiet b{color:var(--fitup);font-weight:700;font-size:13px}.preview-chip{display:inline-flex;font-size:12px;font-weight:500;color:#fff;background:var(--ink);border-radius:999px;padding:4px 12px}.preview-banner{background:var(--ink);color:#fff;font-size:13px;line-height:20px;padding:8px 0;padding-top:calc(8px + env(safe-area-inset-top))}.hero{padding:28px 0 36px}@media(min-width:768px){.hero{padding:48px 0 56px}}.hero h1{font-size:28px;line-height:34px;font-weight:700;letter-spacing:-.01em;margin:8px 0 10px;max-width:18ch}@media(min-width:768px){.hero h1{font-size:40px;line-height:46px;margin:10px 0 14px;max-width:24ch}}.hero-grid{display:grid;grid-template-columns:1fr;gap:28px;margin-top:28px}@media(min-width:900px){.hero-grid{grid-template-columns:1fr 1.25fr;gap:48px;align-items:end;margin-top:40px}}.pct{font-size:56px;line-height:1;font-weight:700;letter-spacing:-.02em}@media(min-width:768px){.pct{font-size:72px}}.pct small{font-size:20px;font-weight:500;color:var(--ink-3);margin-left:4px;letter-spacing:0}.track{height:6px;border-radius:999px;background:var(--line-2);overflow:hidden;margin-top:14px}.track>i{display:block;height:100%;background:var(--progress);border-radius:999px;transition:width .6s ease-out}.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}@media(min-width:900px){.tiles{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}}.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:16px 18px;min-height:96px;display:flex;flex-direction:column;justify-content:space-between}.tile .k{font-size:12px;color:var(--ink-3);font-weight:500}.tile .v{font-size:28px;font-weight:700;line-height:1.1;margin-top:8px}.tile .s{font-size:12px;color:var(--ink-2);margin-top:4px;line-height:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile.milestone .v{font-size:20px;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}@media(min-width:900px)and (max-width:1199px){.tile.milestone .v{font-size:18px}}.diamond{width:11px;height:11px;background:var(--accent);transform:rotate(45deg);display:inline-block;border-radius:1px;flex:none}.diamond.done{background:var(--done)}.section{padding:8px 0 40px}.plan-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px;padding:24px 0 16px;border-top:1px solid var(--line)}.plan-head h2{font-size:20px;line-height:28px;font-weight:700;display:flex;flex-wrap:wrap;align-items:center;gap:10px}.pill{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:500;line-height:1;white-space:nowrap}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.pill.upcoming{color:var(--ink-2);background:var(--stone)}.pill.in_progress{color:var(--pill-ip-fg);background:var(--pill-ip-bg)}.pill.milestone{color:var(--accent);background:var(--accent-tint)}.pill.done{color:#fff;background:var(--done)}.pill.late{color:var(--late);background:var(--late-tint)}.pill.plan-active,.pill.plan-preparing{color:var(--ink);background:var(--stone)}.pill.plan-paused{color:var(--ink-2);background:var(--stone)}.pill.plan-done{color:#fff;background:var(--done)}.segmented{display:inline-flex;background:var(--stone);border-radius:999px;padding:3px}.segmented button{height:32px;padding:0 14px;border-radius:999px;font-size:13px;font-weight:500;color:var(--ink-2);transition:background var(--t),color var(--t)}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #00000014}.gantt{display:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden}.section[data-view=gantt] .gantt{display:block}.section[data-view=gantt] .vt{display:none}.gantt-scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.gantt-inner{position:relative;width:max-content;min-width:100%}.g-row{display:flex;align-items:stretch;border-bottom:1px solid var(--line)}.g-row:last-child{border-bottom:0}.g-label{position:sticky;left:0;z-index:3;width:300px;flex:none;background:var(--surface);border-right:1px solid var(--line);display:flex;align-items:center;gap:10px;padding:0 16px}@media(max-width:1023px){.g-label{width:220px}}.g-track{position:relative;flex:none}.g-head{height:52px;background:var(--surface-2)}.g-head .g-label{background:var(--surface-2);align-items:flex-end;padding-bottom:8px;font-size:12px;font-weight:500;color:var(--ink-3)}.g-head .g-track{background-image:linear-gradient(to right,var(--line) 1px,transparent 1px);background-size:var(--week-px) 100%}.month{position:absolute;top:0;height:26px;border-left:1px solid var(--line-2);padding:6px 8px 0;font-size:12px;font-weight:700;color:var(--ink-2);white-space:nowrap;overflow:hidden;line-height:1.6}.week{position:absolute;top:26px;height:26px;padding:5px 0 0 5px;font-size:11px;color:var(--ink-3);line-height:1.6}.g-phase{height:40px;background:var(--phase-tint, var(--surface-2))}.g-phase .g-label{background:linear-gradient(var(--phase-tint, var(--surface-2)),var(--phase-tint, var(--surface-2))),var(--surface);font-weight:700;font-size:13px}.g-phase .g-label .name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.g-phase .g-track{background-image:linear-gradient(to right,rgba(0,0,0,.045) 1px,transparent 1px);background-size:var(--week-px) 100%}.g-phase .count{margin-left:auto;font-size:12px;font-weight:500;color:var(--ink-3)}.phase-dot{width:8px;height:8px;border-radius:50%;flex:none}.g-task{height:44px;transition:background var(--t);cursor:pointer}.g-task:hover,.g-task:hover .g-label{background:var(--surface-2)}.g-task .g-track{background-image:linear-gradient(to right,rgba(0,0,0,.045) 1px,transparent 1px);background-size:var(--week-px) 100%}.g-task .title{font-size:13.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.status-dot{width:6px;height:6px;border-radius:50%;flex:none}.flag{width:12px;height:12px;flex:none;color:var(--accent)}.flag.done{color:var(--done)}.bar{position:absolute;top:16px;height:12px;border-radius:999px;overflow:hidden}.bar.upcoming{background:var(--upcoming)}.bar.in_progress{background:var(--progress-track)}.bar.in_progress>i{display:block;height:100%;background:var(--progress);border-radius:999px}.bar.done{background:var(--done)}.bar.late{background:#b8651b38}.bar.late>i{display:block;height:100%;background:var(--late);border-radius:999px}.bar.phase{top:17px;height:6px}.bar.phase>i{display:block;height:100%}.ms{position:absolute;top:15px;display:flex;align-items:center;gap:10px}.ms .diamond{width:14px;height:14px;margin-left:-7px;box-shadow:0 0 0 2px #fff}.ms .ms-label{font-size:12px;font-weight:500;color:var(--ink-2);white-space:nowrap;line-height:1.2}.ms.done .ms-label{color:var(--ink-3)}.ms.under-labels .ms-label{visibility:hidden}.today{position:absolute;top:0;bottom:0;width:0;border-left:2px dashed var(--accent);z-index:2;pointer-events:none}.today.faint{opacity:.55}.today span{position:absolute;top:6px;left:6px;font-size:11px;font-weight:700;color:var(--accent);white-space:nowrap;background:var(--surface-2);padding:0 4px;line-height:1.6}.legend{display:flex;flex-wrap:wrap;gap:16px 20px;margin-top:14px;font-size:12px;color:var(--ink-2)}.legend span{display:inline-flex;align-items:center;gap:7px}.legend i{width:18px;height:8px;border-radius:999px;display:inline-block}.legend i.diamond{width:10px;height:10px;border-radius:1px}.vt{display:none;position:relative;padding-left:40px}.section[data-view=list] .vt{display:block}.section[data-view=list] .gantt{display:none}.vt:before{content:"";position:absolute;left:18px;top:8px;bottom:8px;width:2px;background:var(--line-2)}.vt-phase{position:sticky;top:calc(var(--topbar-h) + env(safe-area-inset-top));z-index:5;background:var(--bg);padding:18px 0 10px;display:flex;align-items:center;gap:10px}.vt-phase:before{content:"";position:absolute;left:-27px;top:24px;width:16px;height:16px;border-radius:50%;background:var(--bg);border:2px solid var(--phase, var(--ink-3))}.vt-phase h3{font-size:14px;font-weight:700;min-width:0}.vt-phase .meta{margin-left:auto;white-space:nowrap}.vt-card{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:14px 16px;margin:0 0 10px;width:100%;min-height:44px;text-align:left;display:block;transition:border-color var(--t)}@media(hover:hover){.vt-card:hover{border-color:var(--line-2)}}.vt-card:before{content:"";position:absolute;left:-27px;top:20px;width:12px;height:12px;border-radius:50%;background:var(--c, var(--upcoming));box-shadow:0 0 0 3px var(--bg)}.vt-card.milestone:before{border-radius:2px;transform:rotate(45deg);background:var(--accent)}.vt-card.milestone.done:before{background:var(--done)}.vt-card .t{font-size:15px;font-weight:500;line-height:22px;display:flex;gap:8px;align-items:flex-start}.vt-card .t .flag{margin-top:5px}.vt-card .d{margin-top:2px}.vt-card .row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}.vt-card .pctv{min-width:34px;text-align:right}.mini{flex:1;height:4px;border-radius:999px;background:var(--line-2);overflow:hidden}.mini>i{display:block;height:100%;border-radius:999px;background:var(--progress)}.mini.done>i{background:var(--done)}.mini.late>i{background:var(--late)}.mini.lg{height:6px}.scrim{position:fixed;inset:0;background:#16151452;opacity:0;pointer-events:none;transition:opacity var(--t);z-index:40}.scrim.is-open{opacity:1;pointer-events:auto}.sheet{position:fixed;z-index:41;background:var(--surface);box-shadow:var(--shadow-sheet);display:flex;flex-direction:column;transition:transform .2s ease-out,visibility 0s linear .2s;overscroll-behavior:contain;visibility:hidden}.sheet.is-open{visibility:visible;transition:transform .2s ease-out,visibility 0s}.sheet{left:0;right:0;bottom:0;max-height:92dvh;border-radius:var(--r-sheet) var(--r-sheet) 0 0;transform:translateY(105%);padding-bottom:env(safe-area-inset-bottom)}.sheet.is-open{transform:translateY(0)}.handle{width:40px;height:4px;border-radius:999px;background:var(--line-2);margin:10px auto 0;flex:none}@media(min-width:768px){.sheet{left:auto;top:0;bottom:0;width:440px;max-height:none;border-radius:0;transform:translate(105%)}.sheet.is-open{transform:translate(0)}.handle{display:none}}.sheet-head{padding:16px 20px 0;display:flex;align-items:flex-start;gap:12px;flex:none}.sheet-head .close{margin-left:auto;width:36px;height:36px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--ink-2);flex:none}.sheet-head .close:hover{background:var(--bg)}.sheet-body{padding:8px 20px 28px;overflow:auto;overscroll-behavior:contain}.phase-chip{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-2);font-weight:500}.sheet h2{font-size:20px;line-height:28px;font-weight:700;margin-top:6px}.pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:20px;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.facts.one{grid-template-columns:1fr}.fact .k{font-size:12px;color:var(--ink-3)}.fact .v{font-size:15px;font-weight:700;margin-top:2px}.fact .v.late{color:var(--late)}.late-note{margin-top:12px;color:var(--late)}.block{margin-top:20px}.block>.k{font-size:12px;color:var(--ink-3);font-weight:500;display:flex;justify-content:space-between;margin-bottom:8px}.block>.k b{color:var(--ink)}.people{display:flex;flex-wrap:wrap;gap:10px 16px}.person{display:inline-flex;align-items:center;gap:8px;font-size:14px}.avatar{width:28px;height:28px;border-radius:50%;background:var(--avatar);color:var(--on-avatar);font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex:none}.desc{font-size:15px;line-height:24px;color:var(--ink-2);margin-top:14px;white-space:pre-line;overflow-wrap:anywhere}.check{display:flex;gap:10px;align-items:flex-start;padding:6px 0;font-size:14px}.check i{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--line-2);flex:none;margin-top:3px;display:inline-flex;align-items:center;justify-content:center}.check.done i{background:var(--done);border-color:var(--done)}.check.done i:after{content:"";width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg) translate(-1px,-1px)}.check.done span{color:var(--ink-3);text-decoration:line-through}.thumbs{display:grid;grid-template-columns:repeat(auto-fill,72px);gap:8px;margin-bottom:10px}.thumb{width:72px;height:72px;border-radius:10px;border:1px solid var(--line);overflow:hidden;background:linear-gradient(135deg,#e9e4dc,#cfc9bf);display:block}.thumb img{display:block;width:100%;height:100%;object-fit:cover}.file{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;text-decoration:none;margin-bottom:8px;min-height:44px;transition:border-color var(--t)}@media(hover:hover){.file:hover{border-color:var(--ink-3)}}.file .ic{width:34px;height:34px;border-radius:10px;background:var(--bg);display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:var(--ink-2);flex:none;letter-spacing:.04em}.file .txt{min-width:0}.file .n,.file .m{display:block}.file .n{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file .m{font-size:12px;color:var(--ink-3)}.file .arrow{margin-left:auto;color:var(--ink-3);font-size:16px}.note{font-size:12px;color:var(--ink-3);margin-top:24px;line-height:18px}.footer{border-top:1px solid var(--line);padding:28px 0 calc(28px + env(safe-area-inset-bottom));margin-top:24px}.footer .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}.by{display:inline-flex;align-items:baseline;gap:6px;font-size:13px;color:var(--ink-3)}.by b{color:var(--fitup);font-weight:700;font-size:15px}.pin-page{display:flex;min-height:100dvh;align-items:center;justify-content:center;padding:calc(24px + env(safe-area-inset-top)) var(--gutter) calc(24px + env(safe-area-inset-bottom));background:linear-gradient(180deg,var(--brand-wash),var(--bg) 60%)}.pin-card{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:32px 28px;text-align:center}.pin-card .lockup{justify-content:center}.pin-card .pin-title{font-size:15px;font-weight:500;line-height:22px;margin-top:2px}.pin-card h1{font-size:22px;font-weight:700;margin-top:20px}.pin-card p{color:var(--ink-2);font-size:14px;margin-top:6px}.pin-boxes{display:flex;gap:10px;justify-content:center;margin:28px 0 8px;position:relative}.pin-boxes input{position:absolute;inset:0;opacity:0;width:100%;height:100%;font-size:16px;color:transparent;caret-color:transparent;background:transparent;border:0;padding:0;cursor:text}.box{width:46px;height:56px;border-radius:12px;border:1.5px solid var(--line-2);background:var(--bg);font-size:24px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;transition:border-color var(--t)}.box.active{border-color:var(--ink)}.box.filled{background:var(--surface)}.pin-card[data-state=wrong] .box{border-color:var(--late);animation:shake .3s}.pin-card[data-state=locked] .box{opacity:.5}.pin-card[data-state=verifying] .box{opacity:.6}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.pin-err{font-size:13px;color:var(--late);font-weight:500;min-height:20px}.remember{display:flex;align-items:center;justify-content:center;gap:8px;font-size:14px;color:var(--ink-2);margin:14px 0 20px;min-height:24px;cursor:pointer}.remember input{width:18px;height:18px;accent-color:var(--ink);margin:0}.btn-primary{width:100%;height:48px;border-radius:999px;background:var(--brand-solid);color:var(--on-brand);font-weight:700;font-size:15px;transition:filter var(--t),transform var(--t)}@media(hover:hover){.btn-primary:hover:not(:disabled){filter:brightness(.92)}}.btn-primary:disabled{background:var(--line-2);color:var(--ink-3);cursor:default}.btn-primary.is-busy:disabled{background:var(--brand-solid);color:var(--on-brand);opacity:.75}.pin-foot{font-size:12px;color:var(--ink-3);margin-top:18px;line-height:18px}.pin-card .by-quiet{margin-top:22px;justify-content:center}.state-icon{width:56px;height:56px;border-radius:50%;background:var(--bg);border:1px solid var(--line);color:var(--ink-2);display:inline-flex;align-items:center;justify-content:center}.state-icon svg{width:24px;height:24px}.state-icon.warn{color:var(--late);background:var(--late-tint);border-color:var(--late-tint)}.pin-card .btn-primary.state-action{margin-top:24px}.empty-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:48px 24px;text-align:center;margin-bottom:40px}.empty-card h2{font-size:20px;line-height:28px;font-weight:700;margin-top:18px}.empty-card p{color:var(--ink-2);font-size:14px;margin-top:6px}.sk{display:block;border-radius:8px;background:linear-gradient(90deg,#eeeae3,#f6f3ee,#eeeae3 80%);background-size:200% 100%;animation:shimmer 1.2s linear infinite}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.sk-plate{width:168px;height:72px;border-radius:14px;margin:0 auto}.sk-text{display:inline-block;height:.72em;border-radius:6px;vertical-align:middle}.pin-title .sk-text{margin:0 2px}.sk-title{height:34px;border-radius:10px}@media(min-width:768px){.sk-title{height:46px}}.sk-tile{min-height:96px;border-radius:var(--r-card)}.sk-row{height:44px;border-radius:12px;margin-bottom:10px}.sk-boxes{display:flex;gap:10px;justify-content:center;margin:28px 0 8px;height:56px}.sk-boxes .sk{width:46px;flex:0 1 46px;min-width:0;height:56px;border-radius:12px}.print-head{display:none;font-size:12px;color:var(--ink-3);padding:8px 0;align-items:center;gap:10px}@media print{@page{margin:16mm}body,.app{background:#fff}.topbar,.segmented,.scrim,.sheet,.preview-banner,.legend,.section .gantt{display:none!important}.section .vt{display:block!important}.hero{padding-top:0}.plate.xl{box-shadow:none}.vt-card{break-inside:avoid}.vt-phase{position:static}.tile{break-inside:avoid}.print-head{display:flex!important}.footer{margin-top:0}*{print-color-adjust:exact;-webkit-print-color-adjust:exact}}
