:root{--bg:#f7f7fb;--surface:#fff;--border:#e2e2ea;--text:#1b1b1f;--text-muted:#5f5f6b;--accent:#5f4fd8;--accent-hover:#4a3cc4;--accent-soft:#edeafb;--hover-bg:#1b1b1f0d;--success:#116329;--success-soft:#d8f0df;--warning:#7a4d05;--warning-soft:#fdeeca;--danger:#d31c56;--danger-soft:#fbe3ec;--radius:10px;--shadow:0 1px 2px #0000000a, 0 4px 12px #0000000d}@media (prefers-color-scheme:dark){:root{--bg:#14141a;--surface:#1e1e26;--border:#2c2c36;--text:#f0f0f5;--text-muted:#9a9aa5;--accent:#8b7cf6;--accent-hover:#a396f8;--accent-soft:#2b2749;--hover-bg:#ffffff0f;--success:#7bd88f;--success-soft:#143723;--warning:#e5b95c;--warning-soft:#3b2f12;--danger:#ff6b9a;--danger-soft:#43142a}}*{box-sizing:border-box}html{font-size:106.25%}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif}a{color:var(--accent)}h1{letter-spacing:-.02em;margin:0 0 .5rem;font-size:1.9rem}.page-subtitle{color:var(--text-muted);margin:0 0 1.5rem}.app-shell{grid-template-columns:240px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:1.25rem;height:100vh;padding:1rem .75rem;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar .brand{color:var(--text);padding:.35rem .75rem;font-weight:700;text-decoration:none}.sidebar-nav{flex-direction:column;gap:2px;display:flex}.sidebar-footer{margin-top:auto}.sidebar-nav a{border-radius:calc(var(--radius) - 2px);color:var(--text-muted);align-items:center;gap:.65rem;padding:.55rem .75rem;font-weight:500;text-decoration:none;display:flex}.sidebar-nav a:hover{background:var(--hover-bg);color:var(--text)}.sidebar-nav a.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.nav-icon{font-size:1.15rem;line-height:1}.app-main{flex-direction:column;min-width:0;display:flex}.topbar{z-index:5;padding:calc(.65rem + env(safe-area-inset-top)) 1.5rem .65rem;background:var(--bg);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:1rem;display:flex;position:sticky;top:0}.topbar-title{font-weight:600}.topbar-user{align-items:center;gap:.5rem;display:flex}.content{flex:1;width:100%;max-width:960px;margin:0 auto;padding:2rem 1.5rem}.mobile-nav{display:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem 1.25rem}.card h2{margin:0 0 .25rem;font-size:1.15rem}.list{flex-direction:column;gap:.75rem;margin:1.5rem 0 0;padding:0;list-style:none;display:flex}.form-row{flex-wrap:wrap;align-items:flex-end;gap:.75rem;margin-bottom:1rem;display:flex}input,select,textarea{font:inherit;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);color:var(--text);padding:.6rem .75rem}textarea{resize:vertical;width:100%;min-height:90px}button{font:inherit;border-radius:var(--radius);background:var(--accent);color:#fff;cursor:pointer;border:none;padding:.6rem 1.1rem;font-weight:600}button:hover{background:var(--accent-hover)}button.secondary{color:var(--text-muted);border:1px solid var(--border);background:0 0}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:1.5rem;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:.75rem;width:100%;max-width:360px;padding:2rem;display:flex}.error-text{color:var(--danger);margin:0;font-size:.9rem}.muted{color:var(--text-muted);font-size:.95rem}.field{flex-direction:column;gap:.35rem;display:flex}.field label{color:var(--text-muted);font-size:.9rem;font-weight:600}.form-row .field{flex:1;min-width:160px}.field input:not([type=file]),.field select,.field textarea{width:100%}.input-group{gap:.5rem;display:flex}.input-group input{flex:1;min-width:0}.card-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.card-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}button.danger{color:var(--danger);border:1px solid var(--danger);background:0 0}button.danger:hover{background:var(--danger);color:var(--surface)}button.ghost{color:var(--accent);background:0 0}button.ghost:hover{background:var(--accent-soft)}button:disabled{opacity:.6;cursor:default}button.is-loading{align-items:center;gap:.45rem;display:inline-flex}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:1em;height:1em;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.badge{white-space:nowrap;border-radius:999px;align-items:center;gap:.25rem;padding:.15rem .6rem;font-size:.85rem;font-weight:600;display:inline-flex}.badge-neutral{background:var(--hover-bg);color:var(--text-muted)}.badge-accent{background:var(--accent-soft);color:var(--accent-hover)}.badge-success{background:var(--success-soft);color:var(--success)}.badge-warning{background:var(--warning-soft);color:var(--warning)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem;display:grid}.photo-grid .card{flex-direction:column;gap:.5rem;display:flex}.photo-button{background:0 0;border:none;padding:0}.photo-grid img{border-radius:calc(var(--radius) - 4px);cursor:pointer;width:100%;display:block}dialog.modal{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:min(92vw,440px);color:var(--text);padding:0;box-shadow:0 10px 40px #00000040}dialog.modal.wide{width:min(92vw,720px)}dialog.modal::backdrop{background:#0009}.modal-content{flex-direction:column;gap:.75rem;max-height:85vh;padding:1.25rem;display:flex;overflow-y:auto}.modal-content img{border-radius:calc(var(--radius) - 4px);max-width:100%}.modal-title{margin:0;font-size:1.2rem}.modal-actions{justify-content:flex-end;gap:.5rem;margin-top:.25rem;display:flex}.viewer-comments p{margin:.25rem 0}label.done{color:var(--text-muted);text-decoration:line-through}.home-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1rem;display:grid}.home-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--text);text-align:center;flex-direction:column;align-items:center;gap:.5rem;padding:1.5rem 1rem;font-weight:600;text-decoration:none;display:flex}.home-tile:hover{border-color:var(--accent);color:var(--accent)}.home-icon{font-size:2.2rem;line-height:1}.toast-stack{z-index:100;flex-direction:column;gap:.5rem;display:flex;position:fixed;top:1rem;right:1rem}.toast{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);align-items:center;gap:.5rem;max-width:340px;padding:.7rem 1rem;font-weight:500;animation:.2s ease-out toast-in;display:flex;box-shadow:0 6px 24px #0000002e}.toast-icon{font-weight:700}.toast-success .toast-icon{color:var(--success)}.toast-error .toast-icon{color:var(--danger)}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}}@media (prefers-reduced-motion:reduce){.toast{animation:none}}.skeleton-line{background:var(--hover-bg);border-radius:6px;height:.9rem;animation:1.5s ease-in-out infinite pulse}.skeleton-line+.skeleton-line{margin-top:.6rem}@keyframes pulse{50%{opacity:.4}}@media (prefers-reduced-motion:reduce){.skeleton-line{animation:none}}.empty-state{text-align:center;border:1px dashed var(--border);border-radius:var(--radius);flex-direction:column;align-items:center;gap:.5rem;margin-top:1.5rem;padding:2.5rem 1rem;display:flex}.empty-state-icon{font-size:2.5rem;line-height:1}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (pointer:coarse){button,.sidebar-nav a{align-items:center;min-height:44px;display:inline-flex}}@media (width<=800px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.content{padding-bottom:5.5rem}.mobile-nav{z-index:10;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}.mobile-nav a{min-height:52px;color:var(--text-muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;padding:.4rem .25rem;font-size:.7rem;font-weight:500;text-decoration:none;display:flex}.mobile-nav a.active{color:var(--accent);font-weight:700}.mobile-nav-icon{font-size:1.3rem;line-height:1}.toast-stack{top:calc(.75rem + env(safe-area-inset-top));left:1rem;right:1rem}.toast{max-width:none}}
