*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}:root{--bg: #1a1c22;--panel: #242731;--panel-2: #2c3040;--text: #e8eaf0;--muted: #9aa0b0;--accent: #5865f2;--accent-hover: #6b76ff;--danger: #ed4245;--ok: #3ba55d;--tabbar-h: 62px}html,body{height:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Hiragino Sans,Noto Sans JP,sans-serif;overscroll-behavior:none}#app{max-width:640px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}h1{font-size:1.1rem}.badge{font-size:.7rem;padding:4px 10px;border-radius:999px;background:var(--panel-2);color:var(--muted);white-space:nowrap}.badge.ok{background:#3ba55d2e;color:var(--ok)}main{flex:1;padding:4px 16px calc(var(--tabbar-h) + 24px + env(safe-area-inset-bottom))}.tab{display:none}.tab.active{display:block}form{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.form-row{display:grid;grid-template-columns:1fr 110px;gap:8px}input{background:var(--panel);border:1px solid var(--panel-2);border-radius:10px;color:var(--text);padding:12px;font-size:16px;width:100%}input:focus{outline:2px solid var(--accent);border-color:transparent}button{border:none;border-radius:10px;font-size:15px;font-weight:600;cursor:pointer;color:var(--text);background:var(--panel-2);padding:12px 16px}button.primary{background:var(--accent);color:#fff}button.primary:active{background:var(--accent-hover)}button.danger{background:#ed424526;color:var(--danger)}.error{color:var(--danger);font-size:.85rem}.hint{color:var(--muted);font-size:.78rem;line-height:1.6;margin-top:14px}.empty{color:var(--muted);font-size:.9rem;background:var(--panel);border-radius:10px;padding:16px}.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;background:var(--panel);color:var(--muted);font-size:.85rem;font-weight:600;border:1px solid var(--panel-2)}.chip.selected{color:var(--text);border-color:var(--accent);background:#5865f226}.dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto}.card-list{list-style:none;display:flex;flex-direction:column;gap:8px}.row{display:grid;grid-template-columns:6px 28px 1fr auto auto;align-items:center;gap:10px;background:var(--panel);border-radius:12px;padding:14px 14px 14px 0;overflow:hidden;cursor:pointer}.row .bar{align-self:stretch;border-radius:0}.row .rank{color:var(--muted);font-size:.85rem;text-align:center}.row .name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .sub{color:var(--muted);font-size:.72rem;font-weight:400;display:block;margin-top:2px}.row .march{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.85rem}.row .depart{font-variant-numeric:tabular-nums;font-weight:700;color:var(--ok);min-width:58px;text-align:right}.row .depart.first{color:var(--accent-hover)}.city-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:16px}@media(min-width:480px){.city-grid{grid-template-columns:repeat(3,1fr)}}.city{background:var(--panel);border:2px solid var(--panel-2);border-radius:14px;padding:12px;min-height:92px;display:flex;flex-direction:column;gap:6px;cursor:pointer}.city .city-name{font-size:.8rem;color:var(--muted);font-weight:600;display:flex;align-items:center;gap:6px}.city .assignee{font-weight:700;font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.city .meta{font-size:.75rem;color:var(--muted);font-variant-numeric:tabular-nums}.city.unassigned .assignee{color:var(--muted);font-weight:400;font-size:.85rem}#city-form{flex-direction:row}#city-form input{flex:1}#city-form button{flex:0 0 auto}.swatches{display:flex;gap:10px;flex-wrap:wrap}.swatch{width:34px;height:34px;border-radius:50%;border:3px solid transparent;cursor:pointer}.swatch.selected{border-color:#fff}#tabbar{position:fixed;bottom:0;left:0;right:0;z-index:20;display:flex;max-width:640px;margin:0 auto;background:color-mix(in srgb,var(--panel) 92%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--panel-2);padding-bottom:env(safe-area-inset-bottom)}#tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 10px;background:transparent;color:var(--muted);font-size:.7rem;font-weight:600;border-radius:0}#tabbar button span{font-size:1.3rem}#tabbar button.active{color:var(--accent-hover)}#sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:30}#sheet{position:fixed;bottom:0;left:0;right:0;max-width:640px;margin:0 auto;max-height:78dvh;overflow-y:auto;background:var(--panel);border-radius:18px 18px 0 0;padding:18px 16px calc(20px + env(safe-area-inset-bottom));z-index:31}#sheet h2{font-size:1rem;margin-bottom:14px}#sheet .sheet-list{list-style:none;display:flex;flex-direction:column;gap:6px;margin-bottom:12px}#sheet .sheet-item{display:flex;align-items:center;gap:10px;padding:13px 12px;border-radius:10px;background:var(--panel-2);font-weight:600;cursor:pointer}#sheet .sheet-item .march{margin-left:auto;color:var(--muted);font-weight:400;font-size:.85rem;font-variant-numeric:tabular-nums}#sheet form{margin-bottom:0}#sheet .actions{display:flex;gap:8px;margin-top:4px}#sheet .actions button{flex:1}#login{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:24px}#login[hidden]{display:none}#login-form{width:100%;max-width:320px;display:flex;flex-direction:column;gap:14px;text-align:center;background:var(--panel);border-radius:16px;padding:28px 22px}#login-form h1{font-size:1.3rem}.login-lead{color:var(--muted);font-size:.85rem}#login-password{background:var(--panel-2);border:1px solid transparent;border-radius:10px;padding:12px 14px;color:var(--text);font-size:1rem;text-align:center}#login-password:focus{outline:none;border-color:var(--accent)}
