:root{--bg: #1c1b18;--surface: #232019;--surface-2: #2c2820;--border: #3a362c;--text: #ede7d8;--muted: #948d7a;--brass: #b8874a;--brass-bright: #d9a441;--oil: #5c8d8a;--rust: #c1502e;--ok: #8aa36b}*{box-sizing:border-box}html,body{margin:0;padding:0;touch-action:manipulation}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}#root{min-height:100vh}a{color:inherit}button,input,select{font-family:inherit;color:inherit}.mono{font-family:SF Mono,Roboto Mono,Consolas,monospace;font-variant-numeric:tabular-nums}.disp{font-weight:800;text-transform:uppercase;letter-spacing:.02em}.app-shell{display:flex;min-height:100vh}.mobile-header{position:fixed;top:0;left:0;right:0;z-index:10;background:var(--bg);border-bottom:1px solid var(--border);padding:14px 16px;display:flex;align-items:center;justify-content:space-between}.content{flex:1;min-width:0;min-height:100vh;display:flex;flex-direction:column;padding:76px 16px 90px;max-width:720px;margin:0 auto;width:100%}.content-body{flex:1}.tab-bar{position:fixed;bottom:0;left:0;right:0;z-index:10;display:flex;border-top:1px solid var(--border);background:var(--surface);overflow-x:auto}.tab-link{flex:1 0 auto;min-width:64px;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 0 12px;color:var(--muted);font-size:.66rem;letter-spacing:.03em;text-decoration:none}.tab-link.active{color:var(--brass-bright)}.sidebar{display:none}@media(min-width:900px){.mobile-header,.tab-bar{display:none}.sidebar{display:flex;flex-direction:column;width:220px;flex-shrink:0;border-right:1px solid var(--border);padding:20px 16px;position:sticky;top:0;height:100vh}.content{padding:32px 32px 60px;max-width:900px}}.wordmark{font-size:1.15rem;margin-bottom:22px;text-decoration:none;display:block}.bike-select-wrap{margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border)}.bike-select-label{font-size:.62rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-bottom:6px}.bike-select{background:none;border:none;color:var(--text);font-size:.95rem;font-weight:600;padding:0;width:100%;cursor:pointer}.bike-select option{background:var(--surface);color:var(--text)}.icon-btn{background:none;border:none;color:var(--muted);cursor:pointer;padding:4px;display:inline-flex}.icon-btn:hover{color:var(--brass-bright)}.icon-btn.danger:hover{color:var(--rust)}.icon-btn svg{display:block}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 8px;border-radius:6px;color:var(--muted);font-size:.85rem;margin-bottom:2px;text-decoration:none}.nav-item.active{background:var(--surface);color:var(--brass-bright)}.nav-item svg{display:block;flex-shrink:0}.sidebar-foot{margin-top:auto;font-size:.72rem;color:var(--muted);padding-top:14px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.page-title{font-size:1.2rem;margin:0}.chains-grid{display:grid;grid-template-columns:1fr;gap:14px}@media(min-width:900px){.chains-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}}.parts-divider{grid-column:1 / -1;border-top:1px solid var(--border);margin:2px 0}.chain-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:18px;display:flex;flex-direction:column;gap:10px;text-decoration:none;color:var(--text)}.chain-card.active{border-color:var(--brass);box-shadow:0 0 0 1px var(--brass)}.chain-card.retired{opacity:.75}.chain-card.unmounted{border-style:dashed}.chain-card.due{border-color:var(--rust);box-shadow:0 0 0 1px var(--rust)}.card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.chain-name{font-size:1.15rem}.part-category-icon{display:flex;color:var(--brass);margin-top:3px;flex-shrink:0}.chain-model{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:4px}.status-badge{font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;padding:3px 8px;border-radius:3px;border:1px solid;flex-shrink:0}.status-badge.active{color:var(--brass-bright);border-color:var(--brass-bright)}.status-badge.retired{color:var(--muted);border-color:var(--border)}.status-badge.unmounted{color:var(--muted);border-color:var(--border);border-style:dashed}.status-badge.due{color:var(--rust);border-color:var(--rust)}.stat-grid{display:grid;grid-template-columns:repeat(4,max-content);justify-content:start;align-items:baseline;column-gap:6px;row-gap:2px}.km-row{display:contents}.km-number{font-size:.9rem;font-weight:600}.km-unit{color:var(--muted);font-size:.65rem}.stat-chip{display:inline-flex;align-items:baseline;gap:3px;white-space:nowrap}.stat-label{white-space:nowrap}.km-stat-value{color:var(--text);font-size:.9rem;font-weight:600}.freshness{font-size:.7rem;color:var(--muted);display:flex;align-items:center;gap:6px}.freshness.service-freshness{font-size:.68rem;text-transform:uppercase;letter-spacing:.04em}.stat-due{color:var(--rust)}.stat-icon{color:var(--text);vertical-align:-1px;margin:0 3px 0 0;opacity:.7}.stat-icon.stat-due{color:var(--rust);opacity:1}.fdot{width:6px;height:6px;border-radius:50%;background:var(--ok);flex-shrink:0}.fdot.due{background:var(--rust)}.empty-note{font-size:.85rem;color:var(--muted);padding:20px 0}.sync-banner{display:flex;align-items:center;gap:8px;padding:12px 14px;border-radius:8px;background:#8aa36b24;border:1px solid rgba(138,163,107,.4);color:var(--ok);font-size:.85rem;font-weight:600;margin-bottom:18px}.sync-banner.error{background:#c1502e24;border-color:#c1502e66;color:var(--rust)}.install-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 14px;border-radius:8px;background:#b8874a1f;border:1px solid rgba(184,135,74,.4);color:var(--text);font-size:.82rem;margin-bottom:14px}.btn{font-size:.8rem;font-weight:600;padding:10px 16px;border-radius:6px;cursor:pointer;border:1px solid var(--border);background:transparent;color:var(--text)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--brass);border-color:var(--brass);color:#1c1b18}.btn.danger{border-color:var(--rust);color:var(--rust)}.btn.block{flex:1}.action-bar{display:flex;gap:10px;margin-top:20px}.field-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}.field-label{font-size:.66rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);flex-shrink:0}.field-value{font-size:.88rem;display:flex;align-items:center;gap:8px;min-width:0}.edit-input{background:var(--surface-2);border:1px solid var(--brass);color:var(--text);border-radius:5px;padding:5px 8px;font-size:.85rem;width:160px;max-width:50vw}.mini-btn{background:none;border:1px solid var(--border);border-radius:4px;padding:3px 9px;color:var(--muted);cursor:pointer;font-size:.72rem;flex-shrink:0}.mini-btn.save{border-color:var(--ok);color:var(--ok)}.mini-btn.cancel{border-color:var(--rust);color:var(--rust)}.service-toggle{display:inline-flex;align-items:center;gap:4px;background:none;border:none;padding:0;margin:0;color:inherit;font:inherit;cursor:pointer}.service-toggle svg{transition:transform .15s ease}.service-toggle .rotated{transform:rotate(180deg)}.confirm-row{background:#c1502e1a;border:1px solid var(--rust);border-radius:6px;padding:10px 12px;font-size:.78rem;color:var(--rust);display:flex;align-items:center;justify-content:space-between;gap:10px;flex:1}.section-label{font-size:.64rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin:24px 0 8px}.section-tabs{display:flex;gap:16px;margin:24px 0 18px;overflow-x:auto}.section-tab{background:none;border:none;padding:0;font-size:.64rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);white-space:nowrap;flex-shrink:0;cursor:pointer}.section-tab.active{color:var(--brass-bright)}.history-list{position:relative;padding-left:18px}.history-list:before{content:"";position:absolute;left:4px;top:6px;bottom:6px;border-left:1px dashed var(--border)}.history-row{position:relative;display:flex;gap:10px;padding:7px 0;border-bottom:1px solid var(--border);font-size:.84rem;align-items:baseline}.service-row-block{border-bottom:1px solid var(--border);padding-bottom:4px;margin-bottom:4px}.service-row-block .history-list{padding-bottom:4px}.history-list .history-row{border-bottom:none}.history-list.compact .history-row{font-size:.76rem}.history-list.compact .history-label{color:var(--muted)}.service-name{font-weight:700;font-size:.92rem;color:var(--text)}.overdue-list{margin:4px 0 0;padding-left:18px;list-style:disc}.overdue-list li{margin-bottom:8px}.overdue-list li::marker{color:var(--rust)}.overdue-list li:last-child{margin-bottom:0}.overdue-list .service-name{font-size:.78rem;font-weight:600;color:var(--muted)}.history-dot{position:absolute;left:-18px;top:50%;transform:translateY(-50%);width:7px;height:7px;border-radius:50%;border:2px solid var(--bg);flex-shrink:0}.history-dot.installed{background:var(--brass-bright)}.history-dot.shelved{background:var(--muted)}.history-dot.lubed{background:var(--oil)}.history-label{flex:1}.history-date{color:var(--muted);font-size:.74rem}.history-gap{position:relative;padding:3px 0;font-size:.72rem;font-style:italic;color:var(--muted)}.history-gap-toggle{display:flex;align-items:center;gap:4px;width:100%;background:none;border:none;padding:3px 0;margin:0;font:inherit;font-style:italic;font-size:.72rem;color:var(--muted);cursor:pointer}.history-gap-toggle svg{transition:transform .15s ease}.history-gap-toggle .rotated{transform:rotate(180deg)}.field-error{color:var(--rust);font-size:.76rem;margin:6px 0 0}.form-row{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.form-row label{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.form-row input,.form-row select{background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:5px;padding:8px 10px;font-size:.9rem}.form-row input:focus,.form-row select:focus{outline:2px solid var(--brass-bright);outline-offset:1px;border-color:transparent}.form-row textarea{background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:5px;padding:8px 10px;font-size:.78rem;font-family:SF Mono,Roboto Mono,Consolas,monospace;resize:vertical;min-height:160px}.form-row textarea:focus{outline:2px solid var(--brass-bright);outline-offset:1px;border-color:transparent}.card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:18px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:16px;z-index:100}.modal-content{width:100%;max-width:480px;max-height:calc(100vh - 32px);overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:18px}.modal-title{color:var(--brass);font-size:1.05rem;font-weight:700;margin:0 0 14px}.centered{min-height:100vh;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:16px;text-align:center;padding:24px}.back-link{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;color:var(--muted);text-decoration:none;margin-bottom:16px}.back-link:hover{color:var(--text)}
