:root{--ink:#14181f;--ink-soft:#5b6472;--ink-faint:#8b93a1;--line:#e3e7ee;--surface:#fff;--ground:#f5f7fa;--accent:#1f5fd0;--accent-soft:#eaf1fd;--good:#12805c;--good-soft:#e4f4ee;--warn:#9a6300;--warn-soft:#fdf1dc;--bad:#b42318;--bad-soft:#fdeceb;--radius:12px;--radius-sm:8px;--gutter:16px;--shadow:0 1px 2px #14181f0f, 0 4px 16px #14181f0d;color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:1.5}*{box-sizing:border-box}body{background:var(--ground);min-height:100vh;margin:0}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:650}h1{font-size:22px}h2{font-size:18px}h3{font-size:16px}p{margin:0}button,input,select,textarea{font:inherit;color:inherit}.shell{flex-direction:column;min-height:100vh;display:flex}.topbar{z-index:20;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0}.topbar-inner{max-width:1080px;padding:16px var(--gutter) 12px;align-items:center;gap:12px;margin:0 auto;display:flex}.brand{flex-direction:column;gap:2px;min-width:0;display:flex}.brand-name{letter-spacing:-.03em;font-size:26px;font-weight:750;line-height:1.05}.brand-store{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:550;overflow:hidden}.grow{flex:1}.topbar-tools{align-items:center;gap:8px;display:flex}.sign-out{gap:8px;padding:0 14px}.btn-icon{flex:0 0 18px;width:18px;height:18px}@media (width<=560px){.brand-name{font-size:21px}.brand-store{font-size:13.5px}.sign-out-label{display:none}.sign-out{padding:0 12px}}.nav{max-width:1080px;padding:0 var(--gutter);gap:4px;margin:0 auto;display:flex;overflow-x:auto}.nav a{color:var(--ink-soft);white-space:nowrap;border-bottom:2px solid #0000;align-items:center;min-height:44px;padding:10px 14px;font-weight:550;text-decoration:none;display:flex}.nav a.active{color:var(--accent);border-bottom-color:var(--accent)}.page{width:100%;max-width:1080px;padding:var(--gutter) var(--gutter) 96px;flex:1;margin:0 auto}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.card+.card{margin-top:10px}.stack{flex-direction:column;gap:10px;display:flex}.row{align-items:center;gap:10px;display:flex}.between{justify-content:space-between;align-items:center;gap:10px;display:flex}.muted{color:var(--ink-soft);font-size:14px}.faint{color:var(--ink-faint);font-size:13px}.tabular{font-variant-numeric:tabular-nums}.strong{font-weight:650}.btn{border-radius:var(--radius-sm);background:var(--accent);color:#fff;cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 18px;font-weight:600;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.block{width:100%}.btn.ghost{color:var(--ink);border-color:var(--line);background:0 0}.btn.quiet{color:var(--ink-soft);background:0 0;border-color:#0000;padding:0 10px}.btn.good{background:var(--good)}.btn.bad{background:var(--surface);color:var(--bad);border-color:var(--bad)}.btn.small{min-height:36px;padding:0 12px;font-size:14px}.field{flex-direction:column;gap:6px;display:flex}.field label{color:var(--ink-soft);font-size:14px;font-weight:550}.input,.select,.textarea{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);width:100%;min-height:44px;padding:10px 12px}.textarea{resize:vertical;min-height:84px}.input:focus,.select:focus,.textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.tag{background:var(--ground);color:var(--ink-soft);border-radius:999px;align-items:center;padding:3px 9px;font-size:13px;font-weight:600;display:inline-flex}.tag.good{background:var(--good-soft);color:var(--good)}.tag.warn{background:var(--warn-soft);color:var(--warn)}.tag.bad{background:var(--bad-soft);color:var(--bad)}.tag.accent{background:var(--accent-soft);color:var(--accent)}.banner{border-radius:var(--radius-sm);background:var(--bad-soft);color:var(--bad);border:1px solid #b423182e;padding:12px 14px;font-size:15px}.banner.good{background:var(--good-soft);color:var(--good);border-color:#12805c2e}.banner.warn{background:var(--warn-soft);color:var(--warn);border-color:#9a63002e}.window{border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);flex-wrap:wrap;align-items:center;gap:14px;padding:14px 16px;display:flex}.window.open{background:var(--good-soft);border-color:#12805c33}.window.shut{background:var(--ground)}.window-clock{font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:30px;font-weight:700;line-height:1.1}.window.open .window-clock{color:var(--good)}.empty{text-align:center;color:var(--ink-faint);padding:48px 16px}.stepper{align-items:center;gap:2px;display:inline-flex}.stepper button{border:1px solid var(--line);background:var(--surface);cursor:pointer;width:40px;height:40px;color:var(--ink);font-size:19px;line-height:1}.stepper button:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.stepper button:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.stepper button:disabled{opacity:.4;cursor:not-allowed}.stepper input{text-align:center;border:1px solid var(--line);font-variant-numeric:tabular-nums;border-left:0;border-right:0;width:62px;height:40px}.dock{z-index:30;background:var(--surface);border-top:1px solid var(--line);box-shadow:var(--shadow);position:fixed;bottom:0;left:0;right:0}.dock-inner{max-width:1080px;padding:12px var(--gutter);align-items:center;gap:12px;margin:0 auto;display:flex}.scrim{z-index:40;background:#14181f73;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--surface);border-radius:var(--radius) var(--radius) 0 0;width:100%;max-width:560px;max-height:86vh;padding:18px var(--gutter) calc(18px + env(safe-area-inset-bottom));overflow:auto}@media (width>=640px){.scrim{align-items:center}.sheet{border-radius:var(--radius)}}.centre{min-height:100vh;padding:var(--gutter);justify-content:center;align-items:center;display:flex}.login-card{width:100%;max-width:380px}.spinner{border:2px solid #fff6;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin}.spinner.dark{border-color:var(--line);border-top-color:var(--accent)}@keyframes spin{to{transform:rotate(360deg)}}.thumb{border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--ground);object-fit:cover;flex:0 0 52px;width:52px;height:52px;display:block}.thumb.small{flex-basis:36px;width:36px;height:36px}.thumb-none{letter-spacing:-.01em;background:hsl(var(--tint,0deg) 46% 95%);border-color:hsl(var(--tint,0deg) 40% 87%);color:hsl(var(--tint,0deg) 42% 42%);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:20px;font-weight:650;display:flex}.thumb-none.small{font-size:14px}@media (hover:hover){.thumb-zoom{transform-origin:0;cursor:zoom-in;transition:transform .16s,box-shadow .16s}.thumb-zoom:hover,.thumb-zoom:focus-visible{border-color:var(--surface);z-index:10;position:relative;transform:scale(6);box-shadow:0 6px 28px #14181f47}}@media (prefers-reduced-motion:reduce){.thumb-zoom{transition:none}}.gate{text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:16px;flex-direction:column;align-items:center;gap:10px;padding:44px 20px 48px;display:flex}.gate-mark{background:var(--accent-soft);width:56px;height:56px;color:var(--accent);border-radius:50%;justify-content:center;align-items:center;margin-bottom:4px;font-size:26px;line-height:1;display:flex}.gate-title{letter-spacing:-.015em;text-wrap:balance;margin:0;font-size:21px;font-weight:650}.gate-hint{color:var(--ink-soft);max-width:44ch;margin:0;font-size:15px}.gate-when{color:var(--ink-faint);margin:0;font-size:14px}.gate-when strong{color:var(--ink-soft);font-weight:600}.clock{align-items:flex-start;gap:10px;margin:14px 0 6px;display:flex}.clock-part{min-width:84px;position:relative}.clock-value{letter-spacing:-.03em;background:var(--ground);color:var(--ink);border-radius:12px;padding:14px 8px;font-size:46px;font-weight:700;line-height:1}.clock-label{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin-top:7px;font-size:12px}.clock-colon:before,.clock-colon:after{content:"";background:var(--ink-faint);border-radius:50%;width:4px;height:4px;position:absolute;right:-10px}.clock-colon:before{top:28px}.clock-colon:after{top:44px}@media (width<=480px){.clock-part{min-width:68px}.clock-value{padding:12px 6px;font-size:36px}.clock-colon:before{top:22px}.clock-colon:after{top:34px}}.lang-tabs{background:var(--surface);border:1px solid var(--line);border-radius:999px;gap:2px;padding:3px;display:inline-flex}.lang-tab{color:var(--ink-soft);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:999px;min-height:40px;padding:9px 18px;font-size:14.5px;font-weight:550;transition:background .14s,color .14s}.lang-tab:hover{color:var(--ink)}.lang-tab.active{background:var(--accent);color:#fff}@media (width<=420px){.lang-tab{padding:9px 12px;font-size:14px}}.login-column{flex-direction:column;align-items:center;gap:18px;width:100%;max-width:380px;display:flex}.search{flex:240px;min-width:0;position:relative}.search .input{padding-left:40px}.field-icon{width:18px;height:18px;color:var(--ink-faint);pointer-events:none;position:absolute;top:50%;left:13px;transform:translateY(-50%)}.search .input:focus+.field-icon{color:var(--accent)}.chips{scrollbar-width:thin;gap:8px;padding-bottom:4px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{height:6px}.chips::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}.chip-btn{border:1px solid var(--line);background:var(--surface);min-height:38px;color:var(--ink-soft);cursor:pointer;white-space:nowrap;border-radius:999px;flex:none;padding:0 15px;font-size:14.5px;font-weight:550;transition:border-color .14s,color .14s,background .14s}.chip-btn:hover{color:var(--ink);border-color:var(--line-strong,var(--ink-faint))}.chip-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.chip-count{opacity:.7;font-variant-numeric:tabular-nums;margin-left:7px;font-size:12.5px}.brand-logo{flex:none;width:44px;height:auto;display:block}.brand-name{font-size:24px}.login-brand{letter-spacing:-.02em;text-align:center;flex-direction:column;align-items:center;gap:8px;font-size:20px;font-weight:700;display:flex}.login-brand img{width:64px;height:auto}@media (width<=560px){.brand-logo{width:36px}.brand-name{font-size:19px}}
