@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@500;600&display=swap");:root{--bg:#f7f7f8;--bg-soft:#ffffff;--bg-elev:#ffffff;--border:#e5e7eb;--border-strong:#d4d4d8;--ink:#0f172a;--ink-soft:#334155;--ink-mute:#64748b;--ink-faint:#94a3b8;--primary:#4f46e5;--primary-soft:#eef2ff;--primary-strong:#4338ca;--accent:#0ea5e9;--accent-soft:#e0f2fe;--success:#10b981;--success-soft:#ecfdf5;--danger:#e11d48;--danger-soft:#ffe4e6;--warn:#f59e0b;--warn-soft:#fffbeb;--shadow-sm:0 1px 2px rgba(15,23,42,0.05);--shadow-md:0 1px 2px rgba(15,23,42,0.04),0 8px 24px -8px rgba(15,23,42,0.08);--shadow-lg:0 4px 8px rgba(15,23,42,0.05),0 24px 48px -16px rgba(15,23,42,0.12);--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%;font-family:var(--font-sans);font-size:15px;line-height:1.55;color:var(--ink);background-color:var(--bg);background-image:radial-gradient(1200px 600px at 50% -200px,#eef2ff 0,transparent 60%),radial-gradient(900px 500px at 90% 100%,#f0f9ff 0,transparent 65%);background-attachment:fixed;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{min-height:100vh}button{font-family:inherit}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.page{max-width:720px;margin:0 auto;padding:64px 24px 96px;display:flex;flex-direction:column;gap:24px}.brand{text-align:left}.brand-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.brand h1{font-family:var(--font-sans);font-size:32px;font-weight:700;letter-spacing:-.02em;margin:0;color:var(--ink)}.brand-title{display:inline-flex;align-items:center;gap:12px}.brand-mark{width:40px;height:40px;border-radius:8px;object-fit:cover;flex-shrink:0}.brand p{margin:14px 0 0;color:var(--ink-mute);font-size:15px;max-width:56ch}.auth-bar{display:inline-flex;align-items:center;gap:12px}.auth-user{font-family:var(--font-mono);font-size:13px;color:var(--ink-soft);background:var(--bg-soft);border:1px solid var(--border);padding:6px 10px;border-radius:999px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notif-line,.sync-line{margin-top:12px!important;font-size:14px;color:var(--ink-mute)}.notif-state{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:1px}.notif-state.on{background:var(--success);box-shadow:0 0 0 3px var(--success-soft)}.notif-state.off{background:var(--ink-faint)}.link-btn,.sync-line a{color:var(--primary);text-decoration:none;background:none;border:0;padding:0;font:inherit;cursor:pointer}.link-btn:hover,.sync-line a:hover{text-decoration:underline}.sync-state{color:var(--success);font-weight:500}.card,.timer-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-md);transition:box-shadow .2s ease,border-color .2s ease}.card-title{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-mute);margin:0 0 18px}.field-grid{display:grid;grid-template-columns:1fr;grid-gap:14px;gap:14px;margin-bottom:18px}.field-grid.duration{grid-template-columns:repeat(3,minmax(0,1fr)) auto;align-items:end}@media (max-width:600px){.field-grid.duration{grid-template-columns:repeat(3,minmax(0,1fr))}.field-grid.duration .loop-toggle{grid-column:1/-1}}.field{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:500;color:var(--ink-mute)}.input,.number-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:inherit;font-size:15px;font-weight:500;color:var(--ink);background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;width:100%;outline:none;transition:border-color .15s ease,box-shadow .15s ease;line-height:1.3}.input::placeholder{color:var(--ink-faint)}.input:focus,.number-input:focus{border-color:var(--primary);box-shadow:0 0 0 4px rgba(79,70,229,.15)}.number-input{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:center;font-family:var(--font-mono)}.number-input::-webkit-inner-spin-button,.number-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.number-input[type=number]{-moz-appearance:textfield}.lap-toggle,.loop-toggle{display:inline-flex;align-items:center;gap:10px;font-size:13px;font-weight:500;color:var(--ink-soft);background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap;transition:background .15s ease,border-color .15s ease}.lap-toggle:hover,.loop-toggle:hover{border-color:var(--border-strong);background:var(--bg)}.lap-toggle input[type=checkbox],.loop-toggle input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:16px;height:16px;border:1.5px solid var(--border-strong);background:var(--bg-soft);border-radius:4px;cursor:pointer;position:relative;flex-shrink:0;transition:background .15s ease,border-color .15s ease}.lap-toggle input[type=checkbox]:checked,.loop-toggle input[type=checkbox]:checked{background:var(--primary);border-color:var(--primary)}.lap-toggle input[type=checkbox]:checked:after,.loop-toggle input[type=checkbox]:checked:after{content:"";position:absolute;inset:1px 4px;border-right:2px solid white;border-bottom:2px solid white;transform:rotate(45deg);width:5px;height:9px}.lap-toggle input[type=checkbox]:focus-visible,.loop-toggle input[type=checkbox]:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:inherit;font-size:14px;font-weight:500;color:var(--ink);background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .05s ease;line-height:1.3;box-shadow:var(--shadow-sm)}.btn:hover:not(:disabled){border-color:var(--border-strong);background:var(--bg)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.btn:disabled{opacity:.65;cursor:not-allowed;box-shadow:none}.btn[aria-busy=true]{opacity:1}.btn .spinner,.link-btn .spinner{display:inline-block;width:12px;height:12px;margin-right:8px;border:2px solid;border-top:2px solid transparent;border-radius:50%;vertical-align:-2px;animation:spin .7s linear infinite}.btn.primary .spinner{border-color:transparent rgba(255,255,255,.55) rgba(255,255,255,.55)}.btn.ghost .spinner{border-color:transparent rgba(15,23,42,.45) rgba(15,23,42,.45)}.link-btn:disabled{cursor:not-allowed;opacity:.7}@keyframes spin{to{transform:rotate(1turn)}}.btn.primary{background:var(--primary);color:white;border-color:var(--primary)}.btn.primary:hover:not(:disabled){background:var(--primary-strong);border-color:var(--primary-strong)}.btn.danger{background:var(--danger);color:white;border-color:var(--danger)}.btn.danger:hover:not(:disabled){filter:brightness(.95)}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-mute);box-shadow:none;padding:6px 10px;font-size:13px}.btn.ghost:hover:not(:disabled){background:var(--bg);color:var(--ink);border-color:transparent}.empty{text-align:center;color:var(--ink-mute);background:var(--bg-soft);border:1px dashed var(--border-strong);border-radius:var(--radius-md);padding:32px;font-size:14px}.timer-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:16px;gap:16px}.timer-card{position:relative;display:flex;flex-direction:column;gap:14px;transition:box-shadow .2s ease,border-color .2s ease,transform .2s ease}.timer-card:hover{box-shadow:var(--shadow-lg)}.timer-card.running{border-color:var(--primary);box-shadow:var(--shadow-md),0 0 0 3px rgba(79,70,229,.12)}.timer-card.finished{border-color:var(--border);background:var(--bg);opacity:.85}.timer-card.alert-persistent{border-color:var(--danger);background:var(--danger-soft);animation:pulse-danger 1.2s ease-in-out infinite}.timer-card.alert-brief{border-color:var(--success);background:var(--success-soft)}@keyframes pulse-danger{0%,to{box-shadow:var(--shadow-md),0 0 0 0 rgba(225,29,72,.4)}50%{box-shadow:var(--shadow-md),0 0 0 8px rgba(225,29,72,0)}}.timer-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.timer-name{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.time-display,.timer-name{font-weight:600;color:var(--ink)}.time-display{font-family:var(--font-mono);font-size:56px;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1}.timer-card.running .time-display{color:var(--primary)}.timer-card.alert-persistent .time-display{color:var(--danger)}.timer-card.finished .time-display{color:var(--ink-faint)}.alert-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:white;border:1px solid var(--danger);border-radius:var(--radius-sm);color:var(--danger);font-size:14px;font-weight:600}.brief-banner{padding:10px 14px;background:white;border:1px solid var(--success);border-radius:var(--radius-sm);color:var(--success);font-size:13px;font-weight:500}.timer-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.timer-meta{font-size:12px;color:var(--ink-mute);font-family:var(--font-mono)}@media (max-width:600px){.page{padding:32px 16px 64px}.brand h1{font-size:26px}.time-display{font-size:44px}}