:root{--ink:#233c38;--muted:#798b86;--line:#e1e8e3;--paper:#f5f7f3;--accent:#315e52;--accent-soft:#e8efe7;--danger:#a3493b;--gold:#b6a163}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper)}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #8eb5a8;outline-offset:2px}
[hidden]{display:none!important}
header{height:55px;background:#ffffffed;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:relative;z-index:8;gap:16px}
.brand{display:flex;gap:13px;align-items:center;min-width:0}
.official-logo{width:147px;height:41px;object-fit:contain;display:block}
.header-right{display:flex;align-items:center;gap:14px}
.header-right .meta{font-size:12px;color:var(--muted)}
.plain{background:white;border:1px solid var(--line);border-radius:9px;padding:8px 12px;color:var(--ink);font-size:12px;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.plain:hover{background:#f3f6f2}
.primary{background:var(--accent);color:white;border:1px solid var(--accent);border-radius:9px;padding:8px 13px;font-size:12px;font-weight:600}
.primary:hover{background:#284d44}
.primary:disabled,.plain:disabled{opacity:.5;cursor:default}
.danger{background:var(--danger);color:white;border:1px solid var(--danger);border-radius:9px;padding:8px 13px;font-size:12px;font-weight:600}
.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:650;text-transform:uppercase;color:var(--muted)}
.user-menu{position:relative}
.user-chip{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:white;border-radius:30px;padding:4px 11px 4px 4px;font-size:12px;color:var(--ink)}
.avatar{width:28px;height:28px;border-radius:50%;background:var(--accent);color:white;display:grid;place-items:center;font-size:11px;font-weight:650;letter-spacing:.5px}
.user-pop{position:absolute;right:0;top:calc(100% + 8px);background:white;border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 40px #1f362c22;min-width:200px;padding:6px;display:flex;flex-direction:column;z-index:30}
.user-pop a,.user-pop button{display:block;text-align:left;padding:9px 11px;border-radius:8px;color:var(--ink);text-decoration:none;font-size:12px;border:0;background:none}
.user-pop a:hover,.user-pop button:hover{background:#eff3ee}
.user-pop a.on{font-weight:650}
.user-pop button{border-top:1px solid var(--line);border-radius:0 0 8px 8px;margin-top:4px;color:var(--danger)}
#toasts{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;z-index:100;align-items:center;pointer-events:none}
.toast{pointer-events:auto;background:#233c38;color:#f5f7f3;border-radius:11px;padding:10px 14px;font-size:12px;box-shadow:0 10px 30px #1f362c40;display:flex;gap:14px;align-items:center;max-width:min(560px,92vw);transition:opacity .35s,transform .35s;animation:toast-in .25s ease-out}
.toast.error{background:#7d3328}
.toast.success{background:#2c5a4c}
.toast button{border:0;background:#ffffff26;color:white;border-radius:7px;padding:5px 9px;font-size:11px;font-weight:600}
.toast.out{opacity:0;transform:translateY(8px)}
@keyframes toast-in{from{opacity:0;transform:translateY(8px)}}
.confirm-dialog{border:1px solid var(--line);border-radius:16px;padding:22px;width:min(420px,calc(100vw - 32px));box-shadow:0 25px 80px #1f362c33;color:var(--ink)}
.confirm-dialog::backdrop{background:#20352d66;backdrop-filter:blur(2px)}
.confirm-dialog h2{font:500 19px Georgia,serif;margin:0 0 8px}
.confirm-dialog p{font-size:12px;line-height:1.7;color:#5f756a;margin:0}
.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
@media(max-width:760px){header{height:47px;padding:0 12px}.official-logo{width:110px}.header-right .meta,.user-name{display:none}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
