:root{--color-background:#f7f8fa;--color-surface:#ffffff;--color-text:#111827;--color-muted:#6b7280;--color-border:#e5e7eb;--color-accent:#2563eb;--shell-max-width:768px;--page-gutter:16px;--section-gap:24px;--card-gap:16px;--card-radius:16px;--card-padding:16px;--font-body:1rem;--font-secondary:0.875rem;--font-section:1.125rem;--font-balance:2rem;--top-bar-height:56px;--bottom-bar-height:64px;--touch-size:48px}*{box-sizing:border-box}body{margin:0;background:var(--color-background);color:var(--color-text);font-family:system-ui,sans-serif;font-size:var(--font-body);line-height:1.5}body>main{width:min(100%,768px);margin:0 auto;padding:48px 16px}body>main h1{margin:0 0 16px;font-size:32px}body>main p{margin:0;color:#6b7280}button,input,select,textarea{font:inherit}a{color:var(--color-accent)}a,button,input,select,textarea{-webkit-tap-highlight-color:transparent}:where(a,button,input,textarea,select,[tabindex]):focus-visible{outline:3px solid var(--color-accent);outline-offset:3px}.app-shell{width:min(100%,var(--shell-max-width));height:100vh;height:100dvh;margin-inline:auto;display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;position:relative;background:var(--color-background)}:where(.app-shell,.confirm-dialog) p{margin:0;overflow-wrap:anywhere}:where(.app-shell,.confirm-dialog) :is(h1,h2){margin:0;color:var(--color-text);overflow-wrap:anywhere}.app-shell h2,.confirm-dialog h2{font-size:var(--font-section);line-height:1.5}.top-bar{display:flex;align-items:center;gap:8px;min-width:0;min-height:calc(var(--top-bar-height) + env(safe-area-inset-top, 0px));padding:env(safe-area-inset-top,0) max(var(--page-gutter),env(safe-area-inset-right,0px)) 0 max(var(--page-gutter),env(safe-area-inset-left,0px));background:var(--color-surface);border-bottom:1px solid var(--color-border)}.top-bar h1{flex:1 1;min-width:0;font-size:var(--font-section)}.account-link,.icon-link{display:inline-flex;gap:6px;align-items:center;justify-content:center;flex-shrink:0;min-width:var(--touch-size);min-height:var(--touch-size);color:var(--color-text);text-decoration:none;border-radius:8px}.account-link{font-size:var(--font-secondary)}.navigation-link svg,.top-bar svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.app-content{min-width:0;min-height:0;width:100%;margin:0;padding:var(--section-gap) max(var(--page-gutter),env(safe-area-inset-right,0px)) var(--section-gap) max(var(--page-gutter),env(safe-area-inset-left,0px));overflow-y:auto;overscroll-behavior-y:contain;overflow-wrap:anywhere}.app-content>*+*{margin-top:var(--section-gap)}.session-user{font-weight:600;font-size:var(--font-section)}.bottom-navigation,.navigation-space{min-height:calc(var(--bottom-bar-height) + env(safe-area-inset-bottom, 0px));padding:7px max(8px,env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom, 0px)) max(8px,env(safe-area-inset-left,0px));border-top:1px solid var(--color-border);background:var(--color-surface)}.bottom-navigation{display:flex;gap:4px;align-items:stretch}.navigation-link{flex:1 1;min-width:var(--touch-size);min-height:var(--touch-size);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:0 2px;border-radius:8px;color:var(--color-muted);text-decoration:none;font-size:var(--font-secondary);overflow-wrap:anywhere}.navigation-link[aria-current=page]{color:var(--color-accent);font-weight:700}.navigation-link[aria-current=page] span{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:2px}.skip-link{position:absolute;z-index:2;left:16px;top:8px;padding:12px;background:var(--color-surface);transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.card{padding:var(--card-padding);border:1px solid var(--color-border);border-radius:var(--card-radius);background:var(--color-surface)}.card>*+*{margin-top:var(--card-gap)}.card p,.display-state p,.status-banner p{color:var(--color-muted)}.card-stack{display:grid;gap:var(--card-gap)}.section-stack{display:grid;gap:var(--section-gap)}.display-state{display:flex;flex-direction:column;align-items:flex-start;gap:16px;padding-block:16px}.loading-mark{width:24px;height:24px;border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%}.status-banner{padding:16px;border:1px solid var(--color-border);border-left:4px solid var(--color-accent);border-radius:8px;background:var(--color-surface)}.status-banner>*+*{margin-top:8px}.field-hint,.last-checked{font-size:var(--font-secondary);color:var(--color-muted)}.button{display:inline-flex;align-items:center;justify-content:center;min-height:var(--touch-size);min-width:var(--touch-size);max-width:100%;padding:10px 16px;border:1px solid transparent;border-radius:10px;font-size:var(--font-body);font-weight:600;text-align:center;overflow-wrap:anywhere;text-decoration:none;cursor:pointer}.button-primary{color:var(--color-surface);background:var(--color-accent)}.button-secondary{color:var(--color-text);background:var(--color-surface);border-color:var(--color-border)}.button:disabled{opacity:.6;cursor:default}.form-field{display:grid;gap:8px;min-width:0}.field-label{font-weight:600}.field-error,.field-required{font-size:var(--font-secondary)}.field-error{color:var(--color-text);font-weight:600}.text-input{width:100%;min-width:0;min-height:var(--touch-size);padding:10px 12px;border:1px solid var(--color-border);border-radius:10px;color:var(--color-text);background:var(--color-surface);font-size:var(--font-body)}textarea.text-input{min-height:112px;resize:vertical}.text-input[aria-invalid=true]{border-color:var(--color-text);border-width:2px}.text-input:disabled{background:var(--color-background);color:var(--color-muted)}.confirm-dialog{width:min(480px,calc(100% - 32px));max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));margin:auto;padding:0;border:1px solid var(--color-border);border-radius:var(--card-radius);color:var(--color-text);background:var(--color-surface);overflow-y:auto;overscroll-behavior:contain}.confirm-dialog::backdrop{background:rgb(17 24 39/40%)}.dialog-content{padding:24px 16px 16px}.dialog-content>*+*{margin-top:16px}.dialog-target{font-weight:600}.dialog-actions{display:flex;flex-wrap:wrap;gap:12px;padding:16px;background:var(--color-surface)}.dialog-actions>*{flex:1 1 120px}.dialog-pending{padding:0 16px 16px;font-size:var(--font-secondary)}@media (min-width:600px){:root{--page-gutter:24px}}