:root{color-scheme:light;--bg: #f7f2ea;--bg-wash: #eef6f6;--bg-elevated: #fffdf9;--ink: #1a2332;--ink-2: #5b6573;--ink-3: #7a8494;--hairline: rgba(35, 45, 58, .1);--hairline-strong: rgba(35, 45, 58, .16);--accent: #0aa5ac;--accent-deep: #088a90;--accent-soft: #e6f7f8;--sand: #f3ebe0;--sand-deep: #e8dccb;--stone: #d9cfc0;--danger: #b91c1c;--danger-bg: #fef2f2;--warn: #92400e;--warn-bg: #fffbeb;--radius: 14px;--radius-sm: 10px;--nav-h: 58px;--ease-out: cubic-bezier(.22, 1, .36, 1);--font: "Manrope", "Segoe UI", system-ui, sans-serif;--font-display: "Manrope", "Segoe UI", system-ui, sans-serif;--shadow-soft: 0 1px 0 rgba(26, 35, 50, .04), 0 10px 28px -18px rgba(26, 35, 50, .18)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{font-family:var(--font);background:radial-gradient(1200px 520px at 12% -8%,rgba(10,165,172,.12),transparent 55%),radial-gradient(900px 480px at 92% 4%,rgba(243,235,224,.95),transparent 50%),linear-gradient(180deg,var(--bg-wash) 0%,var(--bg) 38%,#f4efe6 100%);background-attachment:fixed;color:var(--ink);line-height:1.5;overflow-x:hidden}a{color:inherit}button,input{font:inherit}@keyframes portal-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes portal-stagger-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.portal-page{display:flex;flex-direction:column;gap:28px;animation:portal-enter .55s var(--ease-out) both}.stagger>*{animation:portal-stagger-in .5s var(--ease-out) both}.stagger>*:nth-child(1){animation-delay:.05s}.stagger>*:nth-child(2){animation-delay:.1s}.stagger>*:nth-child(3){animation-delay:.15s}.stagger>*:nth-child(4){animation-delay:.2s}.stagger>*:nth-child(5){animation-delay:.25s}.stagger>*:nth-child(6){animation-delay:.3s}.stagger>*:nth-child(7){animation-delay:.35s}.stagger>*:nth-child(8){animation-delay:.4s}@media (prefers-reduced-motion: reduce){.portal-page,.stagger>*,.nav-link,.btn,.row-hover,.seg-btn{animation:none!important;transition:none!important}}.page-title{font-family:var(--font-display);font-size:clamp(1.85rem,3.6vw,2.45rem);font-weight:700;letter-spacing:-.03em;line-height:1.12;color:var(--ink)}.page-sub{margin-top:8px;font-size:1.02rem;font-weight:500;color:var(--ink-2);max-width:36rem;line-height:1.5}.section-label{font-size:.95rem;font-weight:650;color:var(--ink);letter-spacing:-.01em}.place-thumb{flex-shrink:0;overflow:hidden;background:linear-gradient(160deg,#0aa5ac38,#e8dccbf2 55%,#e8dccb)}.place-thumb--sm{width:44px;height:44px;border-radius:var(--radius-sm);border:1px solid rgba(10,165,172,.16)}.place-thumb--lg{width:100%;min-height:92px;height:100%}.place-thumb img{width:100%;height:100%;object-fit:cover;display:block}.place-thumb--empty:after{content:"";display:block;width:100%;height:100%;min-height:inherit;background:radial-gradient(circle at 30% 28%,rgba(10,165,172,.28),transparent 52%),linear-gradient(165deg,#b8e4e6,#e8dccb 70%)}.place-thumb--sm.place-thumb--empty:after{min-height:42px}.place-thumb--lg.place-thumb--empty:after{min-height:92px}.panel{background:var(--bg-elevated);border:1px solid var(--hairline);border-radius:var(--radius);box-shadow:var(--shadow-soft)}.mono-sq{width:44px;height:44px;border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent-deep);border:1px solid rgba(10,165,172,.18);display:inline-flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;letter-spacing:.04em;flex-shrink:0}.status-text{font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--accent-deep);white-space:nowrap}.seg{display:inline-flex;padding:4px;background:#e8dccb8c;border:1px solid var(--hairline);border-radius:12px;gap:2px;width:fit-content}.seg-btn{border:none;background:transparent;color:var(--ink-2);font-size:.82rem;font-weight:600;padding:8px 14px;border-radius:9px;cursor:pointer;transition:background .2s var(--ease-out),color .2s var(--ease-out)}.seg-btn:hover{color:var(--ink)}.seg-btn--on{background:var(--bg-elevated);color:var(--ink);box-shadow:0 1px #1a23320a}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:11px;padding:11px 18px;font-size:.9rem;font-weight:650;letter-spacing:-.01em;cursor:pointer;text-decoration:none;border:none;transition:transform .18s var(--ease-out),opacity .2s ease,background .2s ease,border-color .2s ease}.btn:active:not(:disabled){transform:scale(.985)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--primary,.btn--graphite{background:var(--accent);color:#fff}.btn--primary:hover:not(:disabled),.btn--graphite:hover:not(:disabled){background:var(--accent-deep)}.btn--hairline{background:var(--bg-elevated);color:var(--ink);border:1px solid var(--hairline-strong)}.btn--hairline:hover:not(:disabled){border-color:#0aa5ac73;background:#fff}.btn--ghost{background:transparent;color:var(--ink-2)}.btn--ghost:hover:not(:disabled){color:var(--ink)}.btn--block{width:100%}.banner{display:flex;gap:10px;align-items:flex-start;border-radius:var(--radius-sm);padding:12px 14px;font-size:.85rem;line-height:1.45;border:1px solid var(--hairline)}.banner--err{background:var(--danger-bg);border-color:#fecaca;color:var(--danger)}.banner--warn{background:var(--warn-bg);border-color:#fde68a;color:var(--warn)}.dl-rows{display:flex;flex-direction:column}.dl-row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:14px 0;border-bottom:1px solid var(--hairline)}.dl-row:last-child{border-bottom:none}.dl-row dt{font-size:.9rem;color:var(--ink-2);font-weight:500}.dl-row dd{font-size:.95rem;font-weight:650;color:var(--ink);text-align:right}.muted{color:var(--ink-3);font-size:.9rem}.empty-state{text-align:center;padding:48px 24px;color:var(--ink-2)}.empty-state h3{color:var(--ink);font-size:1.1rem;font-weight:700;letter-spacing:-.02em;margin-bottom:6px}.row-hover{transition:background .2s var(--ease-out)}.row-hover:hover{background:#0aa5ac0a}.text-link{color:var(--accent-deep);text-decoration:none;font-size:.85rem;font-weight:650;display:inline-flex;align-items:center;gap:4px;transition:opacity .2s ease}.text-link:hover{opacity:.78}.login-page,.auth-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px 20px;background:radial-gradient(900px 420px at 18% 8%,rgba(10,165,172,.16),transparent 55%),radial-gradient(700px 380px at 88% 18%,rgba(243,235,224,.9),transparent 52%),linear-gradient(165deg,#eef6f6 0%,var(--bg) 45%,#efe6d8 100%)}.login-card{width:100%;max-width:400px;padding:28px 28px 26px;background:#fffdf9eb;border:1px solid var(--hairline);border-radius:18px;box-shadow:var(--shadow-soft);animation:portal-enter .6s var(--ease-out) both}.login-brand{font-family:var(--font-display);font-size:.92rem;font-weight:800;letter-spacing:-.02em;color:var(--ink);margin-bottom:6px}.login-brand-line{width:36px;height:3px;background:var(--accent);border-radius:2px;margin-bottom:26px}.login-card h1{font-family:var(--font-display);font-size:2.05rem;font-weight:750;letter-spacing:-.035em;line-height:1.1;margin-bottom:8px}.login-sub{font-size:1rem;font-weight:500;color:var(--ink-2);margin-bottom:28px;line-height:1.45}.login-divider{display:flex;align-items:center;gap:12px;margin:20px 0;color:var(--ink-3);font-size:.75rem;font-weight:600}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--hairline)}.login-form{display:flex;flex-direction:column;gap:12px}.login-form label{display:flex;flex-direction:column;gap:6px;font-size:.78rem;font-weight:650;color:var(--ink-2)}.login-form input{border:1px solid var(--hairline-strong);border-radius:11px;padding:12px 14px;font-size:1rem;background:#fff;color:var(--ink);outline:none;transition:border-color .2s ease,box-shadow .2s ease}.login-form input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #0aa5ac29}.login-ok{margin-top:14px;font-size:.85rem;color:#047857}.login-err{margin-top:14px;font-size:.85rem;color:var(--danger)}.login-footnote{margin-top:22px;font-size:.75rem;color:var(--ink-3);line-height:1.45}.auth-loading{flex-direction:column;gap:12px;color:var(--ink-2)}
