:root{--paper:#FBF3E2;--paper2:#F4E9D0;--paper3:#FFF9EC;--card:#fff;--ink:#15130D;--red:#C92A2A;--red2:#A41B1B;--blue:#0B3D91;--navy:#0D2149;--yellow:#FFC72E;--green:#10B26B;--muted:#746D5F;--r:8px;--shadow:5px 5px 0 var(--ink);--shadow-lg:8px 8px 0 var(--ink);--ease:cubic-bezier(.2,.9,.3,1)}
/* ============================================================================
   FK NIGHT — Brand Night Theme v1
   "밤의 기록실에 켜진 Forward Korea"
   Light = 종이 위의 Forward Korea (default)
   Night = Bronze/Sepia brand night (not generic dark mode)
   ============================================================================ */
[data-theme="night"]{
  /* Raw palette */
  --night-bg-0:#1C1913;--night-bg-1:#242017;--night-bg-2:#2D281D;--night-bg-3:#373022;
  --night-surface-1:#292419;--night-surface-2:#312A1D;--night-surface-3:#3B3323;
  --night-ink-1:#F0D8A5;--night-ink-2:#D6BE8F;--night-ink-3:#A9936B;--night-ink-muted:#817154;
  --night-line-1:#7A6742;--night-line-2:#5C4E34;--night-line-soft:#443A29;
  --night-gold:#C8A868;--night-gold-strong:#E1C27F;--night-gold-dim:#927B4E;
  --night-red:#C9483D;--night-red-soft:#7C352E;
  --night-blue:#426B9B;--night-blue-soft:#293E59;
  --night-green:#5E9B77;--night-yellow:#C99A3A;

  /* Semantic tokens (map to existing vars for compatibility) */
  --paper:var(--night-bg-0);--paper2:var(--night-bg-1);--paper3:var(--night-surface-1);
  --card:var(--night-surface-1);
  --ink:var(--night-ink-1);
  --red:var(--night-red);--red2:var(--night-red-soft);
  --blue:var(--night-blue);--green:var(--night-green);
  --yellow:var(--night-yellow);--navy:var(--night-blue-soft);
  --muted:var(--night-ink-3);
  --shadow:2px 2px 0 rgba(10,8,5,.35);--shadow-lg:4px 4px 0 rgba(10,8,5,.42);
}
/* dark mode: monochrome logo (black/white based banner) */
[data-theme="night"] .logo-mark polygon:nth-child(1){fill:#F5EFE0}
[data-theme="night"] .logo-mark polygon:nth-child(2){fill:#9A938A}
[data-theme="night"] .logo-mark polygon:nth-child(3){fill:#5E5A54}
[data-theme="night"] .chip-red{background:#4A2323}
[data-theme="night"] .chip-blue{background:#1E3A5F}
[data-theme="night"] .chip-green{background:#1A4A30}
[data-theme="night"] .chip-green{color:#5AD69A}
[data-theme="night"] .chip-yellow{color:var(--ink)}
[data-theme="night"] .btn-green{color:#0E2A1A}
[data-theme="night"] .pv-stat.chip-red{background:#4A2323}
[data-theme="night"] .pv-stat.chip-yellow{background:#5A4A15}
/* FK NIGHT: no global img filter — photography/UGC keep original color */
[data-theme="night"] img{filter:none}
    *{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:'Pretendard',sans-serif;background:var(--paper);color:var(--ink);line-height:1.58;word-break:keep-all;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;padding-bottom:76px}body::after{content:"";position:fixed;inset:0;z-index:9999;pointer-events:none;opacity:.045;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}a{color:inherit}/* Typography v1.2: Black Han Sans = brand voice only (explicit .display class) */
/* Pretendard = information voice (default for h1,h2,h3) */
/* Archivo = data voice (.mono, numbers, labels) */
.display{font-family:'Black Han Sans',sans-serif;letter-spacing:-.025em;font-weight:400}
h1,h2,h3{font-family:'Pretendard',sans-serif;font-weight:800;letter-spacing:-.02em}.mono{font-family:'Archivo',sans-serif}.wrap{max-width:1220px;margin:0 auto;padding:0 28px}@media(max-width:760px){.wrap{padding:0 18px}}
    .ticker{background:var(--ink);color:var(--paper);overflow:hidden;white-space:nowrap;border-top:4px solid var(--red);border-bottom:3px solid var(--blue)}.ticker .track{display:inline-block;padding:9px 0;animation:scroll 28s linear infinite;font-family:'Archivo';font-weight:900;font-size:13px;letter-spacing:.16em;text-transform:uppercase}.ticker span{margin:0 22px}.ticker .dot{color:var(--yellow)}@keyframes scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
    .top-nav{position:sticky;top:0;z-index:80;background:rgba(251,243,226,.95);backdrop-filter:blur(10px);border-bottom:2px solid var(--blue);box-shadow:0 2px 0 var(--red)}.utility-bar{background:rgba(13,33,73,.06);border-bottom:1px solid rgba(13,33,73,.12)}.utility-inner{display:flex;justify-content:flex-end;align-items:center;min-height:36px;padding-top:4px;padding-bottom:4px}.utility-right{display:flex;align-items:center;gap:8px}.utility-right .btn{padding:4px 10px;font-size:12px}.utility-right .lang-toggle{font-size:12px;padding:4px 8px}.utility-right .party-btn{font-size:12px;padding:4px 10px}.utility-right .party-btn img{width:20px;height:12px}.nav-inner{height:72px;display:flex;align-items:center;justify-content:space-between;gap:20px}.logo{display:flex;align-items:center;gap:12px;text-decoration:none}.logo-mark{width:46px;height:38px;flex:none;display:block;overflow:visible}.logo-text{display:flex;flex-direction:column;line-height:1}.logo-text b{font-family:'Black Han Sans';font-size:22px;font-weight:400}.logo-text small{font-family:'Archivo';font-weight:800;font-size:10px;letter-spacing:.18em;color:var(--muted);text-transform:uppercase;margin-top:5px}.nav-links{display:flex;align-items:center;gap:3px}.nav-links a{padding:8px 11px;border-radius:6px;text-decoration:none;font-weight:800;font-size:14px;color:var(--ink)}.nav-links a:hover{background:var(--paper2);color:var(--ink)}.nav-cta{display:flex;gap:10px}@media(max-width:1023px){.nav-links{display:none}.logo-text small{display:none}}
    .btn{border:2.5px solid var(--ink);background:var(--paper);color:var(--ink);border-radius:var(--r);box-shadow:var(--shadow);padding:12px 18px;display:inline-flex;align-items:center;justify-content:center;gap:9px;text-decoration:none;font-weight:900;font-size:14px;cursor:pointer;transition:transform .14s var(--ease),box-shadow .14s var(--ease),background .14s;font-family:'Pretendard',sans-serif}.btn:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-lg)}.btn:active{transform:translate(3px,3px);box-shadow:0 0 0 var(--ink)}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:3px 3px 0 var(--ink)}.btn-red{background:var(--red);color:var(--paper)}.btn-blue{background:var(--blue);color:var(--paper)}.btn-yellow{background:var(--yellow);color:var(--ink)}.btn-green{background:var(--green);color:#fff}.btn-sm{padding:8px 13px;font-size:13px;box-shadow:3px 3px 0 var(--ink)}.btn-full{width:100%}.arw{font-family:'Archivo';font-weight:900}.chip{display:inline-flex;align-items:center;gap:6px;border:2px solid var(--ink);border-radius:999px;padding:5px 10px;background:var(--paper3);font-size:12px;font-weight:900;line-height:1}.chip-red{background:#F7D7D7;color:var(--red2)}.chip-blue{background:#DCE8FF;color:var(--blue)}.chip-green{background:#DFF5EA;color:#087445}.chip-yellow{background:var(--yellow);color:var(--ink)}.chip-dark{background:var(--ink);color:var(--paper)}
    .hero{padding:54px 0 40px}.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:32px;align-items:start}.kicker{display:inline-flex;align-items:center;gap:9px;font-family:'Archivo';font-weight:900;font-size:12px;letter-spacing:.15em;text-transform:uppercase;background:var(--ink);color:var(--paper);padding:7px 13px;border-radius:999px;margin-bottom:22px}.live-pip{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 0 0 rgba(16,178,107,.6);animation:pulse 1.8s infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(16,178,107,.6)}70%{box-shadow:0 0 0 9px rgba(16,178,107,0)}100%{box-shadow:0 0 0 0 rgba(16,178,107,0)}}.hero h1{font-size:clamp(52px,9vw,108px);line-height:.92;margin-bottom:24px}.hero .red{color:var(--red)}.hero .hl{position:relative;display:inline-block;z-index:1}.hero .hl::before{content:"";position:absolute;left:-6px;right:-6px;bottom:4%;height:38%;background:rgba(255,199,46,.65);z-index:-1;transform:rotate(-1.2deg)}.hero p{max-width:610px;color:var(--ink);font-size:18px;font-weight:600;line-height:1.66;margin-bottom:24px}.hero-cta{display:flex;flex-wrap:wrap;gap:13px}.hero-panel{border:3px solid var(--ink);border-radius:var(--r);background:var(--yellow);box-shadow:var(--shadow-lg);padding:22px;position:sticky;top:92px}.hero-panel h3{font-size:28px;line-height:1;margin-bottom:13px}.action-stack{display:grid;gap:12px;margin-top:14px}.action-card{display:flex;align-items:center;justify-content:space-between;gap:12px;border:2px solid var(--ink);border-radius:7px;background:var(--paper3);padding:12px 13px;text-decoration:none;box-shadow:3px 3px 0 var(--ink)}.action-card b{font-size:14px}.action-card small{display:block;color:var(--muted);font-weight:700;margin-top:2px;font-size:12px}.score-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}.score-box{border:2px solid var(--ink);background:var(--paper);border-radius:7px;padding:12px;text-align:center}.score-box .num{font-family:'Archivo';font-size:26px;font-weight:900;line-height:1;color:var(--blue)}.score-box .lbl{font-size:12px;font-weight:900;color:var(--muted);margin-top:5px}@media(max-width:920px){.hero-grid{grid-template-columns:1fr}.hero-panel{position:static}.hero{padding-top:36px}}
    .sec{padding:44px 0;border-top:3px solid var(--ink)}.sec-head{display:flex;align-items:flex-end;gap:14px;margin-bottom:20px}.sec-no{font-family:'Archivo';font-weight:900;font-size:14px;letter-spacing:.09em;color:var(--red)}.sec-head h2{font-size:clamp(31px,4.6vw,54px);line-height:.96}.rule{flex:1;height:3px;background:var(--ink);margin-bottom:8px}.sec-lead{max-width:650px;color:var(--ink);font-weight:600;margin:-8px 0 18px;font-size:15px}@media(max-width:760px){.sec{padding:48px 0}.sec-head{align-items:flex-start}.rule{display:none}}
    .today-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:22px}.board{border:3px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow-lg);padding:24px;position:relative;overflow:hidden}.board::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.08;background-image:linear-gradient(90deg,var(--red) 0 25%,transparent 25% 50%,var(--blue) 50% 75%,transparent 75%);background-size:44px 100%}.board>*{position:relative}.board-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.board-title h3{font-size:30px}.mission-list{display:grid;gap:11px}.mission{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;border:2px solid var(--ink);border-radius:7px;background:var(--paper);padding:12px}.mission .icon{width:36px;height:36px;border:2px solid var(--ink);border-radius:50%;display:grid;place-items:center;background:var(--yellow);font-weight:900}.mission strong{display:block;font-size:14px}.mission small{color:var(--muted);font-weight:700;font-size:12px}.dice{min-height:210px;display:grid;place-items:center;text-align:center;border:3px solid var(--ink);border-radius:var(--r);background:var(--blue);color:var(--paper);box-shadow:var(--shadow-lg);padding:24px}.dice-face{width:86px;height:86px;border:3px solid var(--ink);background:var(--paper);color:var(--ink);border-radius:14px;display:grid;place-items:center;font-family:'Archivo';font-size:46px;font-weight:900;box-shadow:5px 5px 0 var(--ink);margin:10px auto 17px}.dice h3{font-size:28px;line-height:1;color:var(--paper)}.dice p{color:rgba(251,243,226,.83);font-weight:700;margin:8px 0 17px}@media(max-width:900px){.today-grid{grid-template-columns:1fr}.mission{grid-template-columns:auto 1fr}.mission .btn{grid-column:1/-1}}
    .filters{display:flex;gap:9px;overflow:auto;padding-bottom:8px;margin-bottom:22px}.filter-btn{white-space:nowrap;border:2px solid var(--ink);background:var(--paper3);border-radius:999px;padding:8px 13px;font-weight:900;cursor:pointer}.filter-btn.active{background:var(--ink);color:var(--paper)}.biz-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.biz{border:2.5px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow);overflow:hidden;transition:transform .16s var(--ease),box-shadow .16s var(--ease)}.biz:hover{transform:translate(-3px,-3px);box-shadow:var(--shadow-lg)}.biz-visual{height:136px;border-bottom:2.5px solid var(--ink);display:flex;align-items:flex-end;padding:12px;position:relative;overflow:hidden}.biz-visual::after{content:"";position:absolute;inset:0;opacity:.22;background-image:radial-gradient(rgba(0,0,0,.5) 1px,transparent 1px);background-size:6px 6px;mix-blend-mode:multiply}.biz:nth-child(1) .biz-visual{background:linear-gradient(145deg,#e8d5b0,#d4b886)}.biz:nth-child(2) .biz-visual{background:linear-gradient(145deg,#c5d8f0,#a8c4e4)}.biz:nth-child(3) .biz-visual{background:linear-gradient(145deg,#d5e8c5,#b8d8a8)}.biz-body{padding:17px}.biz-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px}.biz h3{font-size:24px;line-height:1.05}.biz-meta{font-family:'Archivo';font-weight:800;font-size:11px;color:var(--muted);letter-spacing:.05em;text-transform:uppercase;margin-bottom:10px}.biz p{font-size:14px;color:var(--ink);font-weight:600}.biz-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:15px}.stats{display:flex;gap:12px;border-top:1.5px dashed #cbbf9f;margin-top:14px;padding-top:12px;font-family:'Archivo';font-size:12px;font-weight:900;color:var(--muted)}@media(max-width:940px){.biz-grid{grid-template-columns:1fr 1fr}}@media(max-width:620px){.biz-grid{grid-template-columns:1fr}.biz-actions{grid-template-columns:1fr}}
    .coupon-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.coupon{border:2.5px solid var(--ink);border-radius:var(--r);background:var(--yellow);box-shadow:var(--shadow);padding:18px;position:relative;overflow:hidden}.coupon::before,.coupon::after{content:"";position:absolute;top:50%;width:24px;height:24px;background:var(--paper);border:2.5px solid var(--ink);border-radius:50%;transform:translateY(-50%)}.coupon::before{left:-14px}.coupon::after{right:-14px}.coupon h3{font-size:25px;margin-bottom:8px}.coupon .code{font-family:'Archivo';font-size:20px;font-weight:900;letter-spacing:.08em;border:2px dashed var(--ink);padding:10px;text-align:center;background:var(--paper);margin:13px 0}@media(max-width:940px){.coupon-row{grid-template-columns:1fr}}
    .archive-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:20px}.timeline{border:2.5px solid var(--ink);border-radius:var(--r);box-shadow:var(--shadow);background:var(--paper3);padding:20px}.archive-item{border-left:4px solid var(--blue);padding:0 0 18px 15px;margin-left:6px}.archive-item:not(:last-child){border-bottom:1.5px dashed #cbbf9f;margin-bottom:18px}.archive-item h3{font-size:21px;margin:8px 0 5px}.archive-item p{font-size:14px;color:var(--ink);font-weight:600}.guideline{border:3px solid var(--ink);border-radius:var(--r);background:var(--navy);color:var(--paper);box-shadow:var(--shadow-lg);padding:22px}.guideline h3{font-size:28px;color:var(--paper);margin-bottom:12px}.guideline li{margin-left:20px;margin-bottom:9px;color:rgba(251,243,226,.86);font-weight:700}@media(max-width:900px){.archive-grid{grid-template-columns:1fr}}
    .submit-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:22px}.type-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.type-btn{border:2px solid var(--ink);border-radius:7px;background:var(--paper3);padding:13px;text-align:left;box-shadow:3px 3px 0 var(--ink);font-weight:900;cursor:pointer}.type-btn.active{background:var(--blue);color:var(--paper)}.form-card{border:3px solid var(--ink);border-radius:var(--r);background:var(--yellow);box-shadow:var(--shadow-lg);padding:24px}.field{margin-bottom:16px}.field label{display:block;font-size:13px;font-weight:900;margin-bottom:7px}input,select,textarea{width:100%;border:2.5px solid var(--ink);border-radius:7px;background:var(--paper3);padding:12px 13px;font-family:'Pretendard';font-size:14px;color:var(--ink)}textarea{min-height:98px;resize:vertical}input:focus,textarea:focus,select:focus{outline:none;box-shadow:3px 3px 0 var(--ink)}.drop{border:2.5px dashed var(--ink);border-radius:7px;background:var(--paper);padding:18px;text-align:center;font-weight:800;color:var(--muted)}.file-list{display:grid;gap:7px;margin-top:10px;font-size:13px;font-weight:800}.file-pill{display:flex;justify-content:space-between;gap:8px;border:2px solid var(--ink);border-radius:6px;background:var(--paper3);padding:8px}.principles{border-top:2px dashed var(--ink);padding-top:16px;margin-top:17px;display:grid;gap:10px}.principles label{display:flex;gap:10px;align-items:flex-start;font-size:13px;font-weight:800;line-height:1.45}.principles input{width:18px;height:18px;margin-top:2px;accent-color:var(--ink)}@media(max-width:900px){.submit-grid{grid-template-columns:1fr}.type-grid{grid-template-columns:1fr 1fr}}@media(max-width:540px){.type-grid{grid-template-columns:1fr}}
    .flow{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.flow-step{border:2.5px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow);padding:18px}.flow-step .n{font-family:'Archivo';font-weight:900;color:var(--red);font-size:13px}.flow-step h3{font-size:21px;margin:4px 0 7px}.flow-step p{font-size:13px;color:var(--ink);font-weight:600}@media(max-width:900px){.flow{grid-template-columns:1fr 1fr}}@media(max-width:560px){.flow{grid-template-columns:1fr}}
    footer{background:var(--navy);color:var(--paper);border-top:4px solid var(--red);padding:48px 0;position:relative}footer::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(201,42,42,.05) 0 1px,transparent 1px 14px);pointer-events:none}footer .wrap{position:relative}.foot-word{font-family:'Black Han Sans';font-size:clamp(44px,9vw,100px);line-height:.88}.foot-word span{color:var(--red)}.foot-sub{margin-top:15px;color:rgba(251,243,226,.74);font-weight:700}.foot-meta{font-family:'Archivo';font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:rgba(251,243,226,.5);margin-top:13px;font-weight:900}.bottom-nav{position:fixed;left:12px;right:12px;bottom:10px;z-index:120;display:none;grid-template-columns:repeat(5,1fr);gap:6px;background:rgba(21,19,13,.94);border:2.5px solid var(--ink);border-radius:18px;padding:7px;box-shadow:0 10px 30px rgba(0,0,0,.25)}.bottom-nav a{display:grid;place-items:center;text-decoration:none;color:var(--paper);font-size:10px;font-weight:900;gap:2px}.bottom-nav span{font-size:18px;line-height:1}@media(max-width:760px){.bottom-nav{display:grid}}.toast{position:fixed;right:18px;bottom:92px;z-index:150;background:var(--ink);color:var(--paper);border:2.5px solid var(--ink);border-radius:9px;box-shadow:var(--shadow);padding:12px 15px;font-weight:900;transform:translateY(20px);opacity:0;pointer-events:none;transition:.2s var(--ease)}.toast.show{transform:translateY(0);opacity:1}
/* ── 자유와혁신 링크: 헤더 우측 버튼 + 푸터 배너 ── */
.party-btn{display:inline-flex;align-items:center;gap:6px;flex:none;white-space:nowrap;text-decoration:none;color:var(--ink);background:var(--card);border:2.5px solid var(--ink);border-radius:999px;box-shadow:2px 2px 0 var(--ink);padding:6px 11px;font-weight:900;font-size:13px;line-height:1}
.party-btn img{height:14px;width:auto;display:block}
.party-btn .arw{font-size:11px}
.party-btn:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}
.party-btn:focus-visible,.party-banner:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
.lang-toggle{display:inline-flex;align-items:center;flex:none;white-space:nowrap;text-decoration:none;color:#fff;background:var(--blue);border:2.5px solid var(--ink);border-radius:999px;box-shadow:2px 2px 0 var(--ink);padding:6px 12px;font-weight:900;font-size:13px;line-height:1;letter-spacing:.06em}
.lang-toggle:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}
.lang-toggle:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
.nav-inner .nav-cta{margin-left:auto}
/* 헤더 내비 줄바꿈 방지 + 중형 화면 최적화 */
.nav-links a,.nav-cta .btn{white-space:nowrap;flex:none}
@media(max-width:1200px){.nav-links a{padding:8px 8px;font-size:13px}.nav-inner{gap:12px}.party-btn .party-btn-text{display:none}}
@media(max-width:1050px){.nav-cta .btn{padding:6px 10px;font-size:12px}.lang-toggle{padding:6px 10px}}
.party-banner{display:flex;align-items:center;gap:16px;margin-top:26px;max-width:640px;padding:14px 18px;background:var(--paper);color:var(--ink);text-decoration:none;border:3px solid var(--ink);border-radius:10px;box-shadow:5px 5px 0 var(--red)}
.party-banner:hover{transform:translate(-1px,-1px);box-shadow:6px 6px 0 var(--red)}
.party-banner-logo{height:34px;width:auto;flex:none}
.party-banner-body{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}
.party-banner-name{font-family:'Black Han Sans';font-weight:400;font-size:26px;line-height:1}
.party-banner-sub{font-size:12px;font-weight:800;color:var(--muted)}
.party-banner-cta{flex:none;font-family:'Archivo';font-weight:900;font-size:13px;background:var(--ink);color:var(--paper);border-radius:999px;padding:7px 12px}
@media(max-width:560px){
  .party-btn{padding:5px 9px;font-size:12px;gap:5px}
  .party-banner{gap:12px;padding:12px 14px}
  .party-banner-name{font-size:22px}
  .party-banner-cta{display:none}
}
@media(max-width:360px){.party-btn .arw{display:none}.logo-text b{font-size:17px}}

/* ── 돈쭐지도 제보 안내 ── */
.map-report-callout{display:flex;align-items:flex-start;gap:12px;margin:0 0 18px;padding:14px 16px;background:#FFF1B8;border:3px solid var(--ink);border-radius:10px;box-shadow:5px 5px 0 var(--ink)}
.map-report-icon{font-size:26px;line-height:1}
.map-report-callout p{margin:0;font-size:15px;line-height:1.6;font-weight:700;word-break:keep-all}
.map-report-callout b{display:block;font-size:18px;font-weight:900;color:var(--red2)}
  
    /* v0.8 — natural stars & stripes background */
    body::before{
      content:"";
      position:fixed;
      inset:0;
      z-index:0;
      pointer-events:none;
      opacity:.16;
      background-image:
        radial-gradient(circle at 12px 12px, rgba(251,243,226,.92) 0 1.4px, transparent 1.8px),
        linear-gradient(90deg, rgba(11,61,145,.28) 0 29%, transparent 29% 100%),
        repeating-linear-gradient(0deg, rgba(201,42,42,.12) 0 10px, rgba(251,243,226,0) 10px 22px);
      background-size:28px 28px, 100% 100%, 100% 44px;
      background-position:0 0, 0 0, 0 0;
      mix-blend-mode:multiply;
    }
    .ticker, section, footer{position:relative;z-index:1}
    .version-pill{
      display:inline-flex;align-items:center;gap:6px;
      font-family:'Archivo';font-weight:900;font-size:11px;letter-spacing:.1em;
      border:2px solid var(--ink);border-radius:999px;background:var(--paper3);padding:5px 9px;
    }

    /* v0.8 — slot style dice */
    .slot-machine{
      width:min(220px,100%);
      margin:12px auto 17px;
      border:3px solid var(--ink);
      border-radius:16px;
      background:var(--paper);
      box-shadow:6px 6px 0 var(--ink);
      padding:10px;
      position:relative;
      overflow:hidden;
    }
    .slot-machine::before{
      content:"";
      position:absolute;
      inset:0;
      pointer-events:none;
      background:
        linear-gradient(180deg, rgba(255,255,255,.92) 0%, rgba(255,255,255,0) 28%, rgba(255,255,255,0) 72%, rgba(21,19,13,.12) 100%);
      z-index:2;
    }
    .slot-window{
      height:86px;
      overflow:hidden;
      border:2.5px solid var(--ink);
      border-radius:11px;
      background:linear-gradient(180deg,#fffaf0,#f3e5c3);
      position:relative;
    }
    .slot-reel{
      transform:translateY(0);
      will-change:transform;
    }
    .slot-reel span{
      height:86px;
      display:flex;
      align-items:center;
      justify-content:center;
      font-family:'Archivo';
      font-size:48px;
      font-weight:900;
      color:var(--ink);
      text-shadow:2px 2px 0 rgba(201,42,42,.16);
    }
    .slot-machine.spinning{
      animation:slotShake .12s linear infinite;
    }
    @keyframes slotShake{
      0%{transform:translateX(0)}
      25%{transform:translateX(-1px)}
      50%{transform:translateX(1px)}
      100%{transform:translateX(0)}
    }
    .slot-indicator{
      margin-top:8px;
      font-family:'Archivo';
      font-size:11px;
      font-weight:900;
      letter-spacing:.18em;
      color:var(--blue);
    }
    .slot-note{font-size:12px;color:rgba(251,243,226,.7);font-weight:800;margin-top:8px}
    @media (prefers-reduced-motion: reduce){
      .slot-machine.spinning{animation:none}
      .slot-reel{transition:none!important}
    }

    /* v0.8 — coming soon and external hub */
    .soon-card{
      border:3px solid var(--ink);
      border-radius:var(--r);
      background:var(--paper3);
      box-shadow:var(--shadow-lg);
      padding:26px;
      position:relative;
      overflow:hidden;
    }
    .soon-card::after{
      content:"COMING SOON";
      position:absolute;
      right:-42px;
      top:22px;
      transform:rotate(18deg);
      font-family:'Archivo';
      font-size:34px;
      font-weight:900;
      color:rgba(201,42,42,.13);
      letter-spacing:.08em;
      pointer-events:none;
    }
    .soon-card h3{font-size:34px;margin:10px 0 8px}
    .soon-card p{font-weight:700;color:var(--ink);max-width:780px}
    .soon-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px}
    .soon-mini{
      border:2px solid var(--ink);
      border-radius:7px;
      background:var(--paper);
      padding:14px;
      box-shadow:3px 3px 0 var(--ink);
      font-weight:800;
    }
    .soon-mini b{display:block;font-family:'Black Han Sans';font-size:21px;font-weight:400;margin-bottom:5px}
    .soon-mini small{color:var(--muted);font-weight:800}
    .external-hub{
      border:3px solid var(--ink);
      border-radius:var(--r);
      background:var(--blue);
      color:var(--paper);
      box-shadow:var(--shadow-lg);
      padding:28px;
      position:relative;
      overflow:hidden;
    }
    .external-hub::before{
      content:"";
      position:absolute;
      inset:0;
      opacity:.18;
      background-image:
        radial-gradient(circle at 8px 8px, #fff 0 1.6px, transparent 1.8px),
        repeating-linear-gradient(0deg, rgba(201,42,42,.45) 0 9px, transparent 9px 20px);
      background-size:24px 24px, 100% 40px;
      pointer-events:none;
    }
    .external-hub > *{position:relative}
    .external-hub h3{font-size:42px;color:var(--paper);line-height:.98;margin:10px 0}
    .external-hub p{max-width:720px;font-weight:700;color:rgba(251,243,226,.86)}
    .hub-map{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:18px}
    .hub-map a{
      border:2px solid var(--ink);
      background:var(--paper);
      color:var(--ink);
      border-radius:7px;
      box-shadow:3px 3px 0 var(--ink);
      padding:13px;
      text-decoration:none;
      font-weight:900;
    }
    .hub-map small{display:block;color:var(--muted);font-weight:800;margin-top:4px}
    @media(max-width:900px){.soon-grid,.hub-map{grid-template-columns:1fr 1fr}}
    @media(max-width:560px){.soon-grid,.hub-map{grid-template-columns:1fr}}

  
    /* v0.8.1 — shop benefit sliding banner */
    .benefit-stage{
      border:3px solid var(--ink);
      border-radius:var(--r);
      background:var(--red);
      box-shadow:var(--shadow-lg);
      overflow:hidden;
      position:relative;
    }
    .benefit-stage::before{
      content:"";
      position:absolute;
      inset:0;
      opacity:.18;
      background-image:
        radial-gradient(circle at 9px 9px, #fff 0 1.5px, transparent 1.8px),
        repeating-linear-gradient(0deg, rgba(11,61,145,.45) 0 9px, transparent 9px 20px);
      background-size:24px 24px,100% 40px;
      pointer-events:none;
    }
    .benefit-head{
      position:relative;
      z-index:1;
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:18px;
      padding:22px 24px;
      color:var(--paper);
      border-bottom:2.5px solid var(--ink);
    }
    .benefit-head h3{
      color:var(--paper);
      font-size:36px;
      line-height:.98;
    }
    .benefit-head p{
      max-width:620px;
      font-weight:800;
      color:rgba(251,243,226,.86);
      font-size:14px;
    }
    .benefit-viewport{
      position:relative;
      z-index:1;
      overflow:hidden;
      background:color-mix(in srgb,var(--paper) 18%,transparent);
      padding:18px 0;
    }
    .benefit-track{
      display:flex;
      width:max-content;
      gap:16px;
      padding:0 16px;
      animation:benefitScroll 30s linear infinite;
    }
    .benefit-viewport:hover .benefit-track{
      animation-play-state:paused;
    }
    @keyframes benefitScroll{
      from{transform:translateX(0)}
      to{transform:translateX(-50%)}
    }
    .benefit-card{
      width:310px;
      flex:0 0 auto;
      border:2.5px solid var(--ink);
      border-radius:var(--r);
      background:var(--paper3);
      color:var(--ink);
      box-shadow:5px 5px 0 var(--ink);
      padding:17px;
      position:relative;
      overflow:hidden;
    }
    .benefit-card::after{
      content:"";
      position:absolute;
      right:-26px;
      bottom:-26px;
      width:92px;
      height:92px;
      border-radius:50%;
      background:conic-gradient(var(--red) 0 180deg,var(--blue) 180deg 360deg);
      opacity:.18;
    }
    .benefit-card .shop{
      font-family:'Black Han Sans';
      font-size:25px;
      line-height:1;
      margin:10px 0 8px;
      position:relative;
      z-index:1;
    }
    .benefit-card .benefit{
      font-weight:900;
      color:var(--red2);
      font-size:16px;
      margin-bottom:8px;
      position:relative;
      z-index:1;
    }
    .benefit-card p{
      font-size:13px;
      color:var(--ink);
      font-weight:700;
      position:relative;
      z-index:1;
    }
    .benefit-card .mini-actions{
      display:flex;
      gap:8px;
      margin-top:14px;
      position:relative;
      z-index:1;
    }
    .benefit-submit{
      position:relative;
      z-index:1;
      display:flex;
      justify-content:space-between;
      align-items:center;
      gap:16px;
      padding:18px 24px;
      border-top:2.5px solid var(--ink);
      background:var(--yellow);
    }
    .benefit-submit strong{
      font-size:15px;
      font-weight:900;
    }
    .benefit-submit small{
      display:block;
      margin-top:2px;
      color:var(--muted);
      font-weight:800;
    }
    .slot-dev-note{
      margin-top:10px;
      border:2px dashed rgba(251,243,226,.62);
      border-radius:7px;
      padding:9px 10px;
      color:rgba(251,243,226,.78);
      font-size:12px;
      font-weight:800;
    }
    @media(max-width:760px){
      .benefit-head,.benefit-submit{align-items:flex-start;flex-direction:column}
      .benefit-head h3{font-size:31px}
      .benefit-card{width:282px}
      .benefit-track{animation-duration:36s}
    }

  
    /* v0.8.2 — Instagram / Threads hashtag challenge wall */
    .social-bridge{
      border:3px solid var(--ink);
      border-radius:var(--r);
      background:var(--blue);
      color:var(--paper);
      box-shadow:var(--shadow-lg);
      overflow:hidden;
      position:relative;
      margin-bottom:24px;
    }
    .social-bridge::before{
      content:"";
      position:absolute;
      inset:0;
      opacity:.18;
      background-image:
        radial-gradient(circle at 9px 9px, #fff 0 1.5px, transparent 1.8px),
        repeating-linear-gradient(0deg, rgba(201,42,42,.48) 0 10px, transparent 10px 22px);
      background-size:24px 24px, 100% 44px;
      pointer-events:none;
    }
    .social-bridge > *{position:relative;z-index:1}
    .bridge-head{
      display:flex;
      justify-content:space-between;
      align-items:center;
      gap:22px;
      padding:24px;
      border-bottom:2.5px solid var(--ink);
    }
    .bridge-head h3{
      color:var(--paper);
      font-size:42px;
      line-height:.95;
      margin:9px 0;
    }
    .bridge-head p{
      max-width:650px;
      color:rgba(251,243,226,.86);
      font-weight:800;
    }
    .hashtag-row{
      display:flex;
      flex-wrap:wrap;
      gap:9px;
      margin-top:14px;
    }
    .hashtag{
      display:inline-flex;
      border:2px solid var(--ink);
      border-radius:999px;
      background:var(--paper);
      color:var(--ink);
      padding:7px 11px;
      font-family:'Archivo';
      font-size:12px;
      font-weight:900;
      text-decoration:none;
      box-shadow:2px 2px 0 var(--ink);
    }
    .bridge-actions{
      display:flex;
      flex-direction:column;
      gap:10px;
      min-width:220px;
    }
    .wall-toolbar{
      display:flex;
      justify-content:space-between;
      align-items:center;
      flex-wrap:wrap;
      gap:12px;
      padding:16px 24px;
      background:var(--yellow);
      color:var(--ink);
      border-bottom:2.5px solid var(--ink);
    }
    .wall-tabs{
      display:flex;
      gap:8px;
      flex-wrap:wrap;
    }
    .wall-tab{
      border:2px solid var(--ink);
      border-radius:999px;
      background:var(--paper);
      padding:7px 11px;
      font-weight:900;
      cursor:pointer;
      box-shadow:2px 2px 0 var(--ink);
      font-size:12px;
    }
    .wall-tab.active{
      background:var(--ink);
      color:var(--paper);
    }
    .challenge-wall{
      columns:4 230px;
      column-gap:18px;
      padding:22px;
      background:color-mix(in srgb,var(--paper) 12%,transparent);
    }
    .challenge-post{
      break-inside:avoid;
      margin-bottom:18px;
      border:2.5px solid var(--ink);
      border-radius:var(--r);
      background:var(--paper3);
      color:var(--ink);
      box-shadow:var(--shadow);
      overflow:hidden;
      position:relative;
      transition:transform .16s var(--ease), box-shadow .16s var(--ease);
    }
    .challenge-post:hover{
      transform:translate(-3px,-3px);
      box-shadow:var(--shadow-lg);
    }
    .challenge-img{
      min-height:168px;
      border-bottom:2.5px solid var(--ink);
      padding:12px;
      display:flex;
      align-items:flex-start;
      justify-content:space-between;
      position:relative;
      overflow:hidden;
    }
    .challenge-img::after{
      content:"";
      position:absolute;
      inset:0;
      opacity:.2;
      background-image:radial-gradient(rgba(0,0,0,.5) 1px,transparent 1px);
      background-size:6px 6px;
      mix-blend-mode:multiply;
    }
    .challenge-post:nth-child(1) .challenge-img{background:linear-gradient(145deg,#e8d5b0,#d4b886)}
    .challenge-post:nth-child(2) .challenge-img{background:linear-gradient(145deg,#c5d8f0,#a8c4e4);min-height:210px}
    .challenge-post:nth-child(3) .challenge-img{background:linear-gradient(145deg,#f5d5c5,#e8b89a)}
    .challenge-post:nth-child(4) .challenge-img{background:linear-gradient(145deg,#d5e8c5,#b8d8a8);min-height:138px}
    .challenge-post:nth-child(5) .challenge-img{background:linear-gradient(145deg,#e8c5d5,#d4a8c5)}
    .challenge-post:nth-child(6) .challenge-img{background:linear-gradient(145deg,#c5d5e8,#a8c0dc);min-height:205px}
    .platform-badge{
      position:relative;
      z-index:1;
      border:2px solid var(--ink);
      border-radius:999px;
      background:var(--paper);
      color:var(--ink);
      padding:5px 9px;
      font-family:'Archivo';
      font-size:11px;
      font-weight:900;
      box-shadow:2px 2px 0 var(--ink);
    }
    .approved-badge{
      position:relative;
      z-index:1;
      border:2px solid var(--green);
      border-radius:999px;
      background:var(--mint);
      color:#087445;
      padding:5px 9px;
      font-size:11px;
      font-weight:900;
    }
    .challenge-body{
      padding:14px 15px 15px;
    }
    .challenge-user{
      display:flex;
      align-items:center;
      gap:9px;
      margin-bottom:10px;
    }
    .challenge-avatar{
      width:32px;
      height:32px;
      border:2px solid var(--ink);
      border-radius:50%;
      background:conic-gradient(var(--red) 0 180deg,var(--blue) 180deg 360deg);
      flex:none;
    }
    .challenge-user b{display:block;font-size:13px}
    .challenge-user small{font-family:'Archivo';font-size:11px;color:var(--muted);font-weight:900}
    .challenge-caption{
      font-size:14px;
      color:var(--ink);
      font-weight:700;
      line-height:1.5;
    }
    .challenge-stats{
      display:flex;
      gap:12px;
      border-top:1.5px dashed #cbbf9f;
      margin-top:12px;
      padding-top:10px;
      font-family:'Archivo';
      font-size:12px;
      font-weight:900;
      color:var(--muted);
    }
    .wall-note{
      padding:16px 24px;
      background:var(--paper3);
      color:var(--ink);
      font-size:13px;
      font-weight:800;
      border-top:2.5px solid var(--ink);
    }
    @media(max-width:900px){
      .bridge-head{align-items:flex-start;flex-direction:column}
      .bridge-actions{width:100%;min-width:0}
      .challenge-wall{columns:3 200px}
    }
    @media(max-width:620px){
      .bridge-head h3{font-size:34px}
      .challenge-wall{columns:2 160px;padding:16px}
    }
    @media(max-width:420px){
      .challenge-wall{columns:1}
    }

  
    /* v0.8.3 — nationwide block minimap */
    .map-shell{
      display:grid;
      grid-template-columns:minmax(0,1fr) 360px;
      gap:20px;
      align-items:start;
      margin-bottom:22px;
    }
    .map-copy-card{
      border:3px solid var(--ink);
      border-radius:var(--r);
      background:var(--paper3);
      box-shadow:var(--shadow-lg);
      padding:20px;
      min-height:100%;
    }
    .map-copy-card h3{
      font-size:31px;
      line-height:.98;
      margin:8px 0 10px;
    }
    .map-copy-card p{
      color:var(--ink);
      font-weight:700;
      max-width:720px;
    }
    .map-scope-grid{
      display:grid;
      grid-template-columns:repeat(3,minmax(0,1fr));
      gap:10px;
      margin-top:16px;
    }
    .scope-box{
      border:2px solid var(--ink);
      border-radius:7px;
      background:var(--paper);
      box-shadow:3px 3px 0 var(--ink);
      padding:11px;
    }
    .scope-box b{
      display:block;
      font-family:'Archivo';
      font-weight:900;
      color:var(--blue);
      line-height:1;
    }
    .scope-box small{
      display:block;
      margin-top:5px;
      color:var(--muted);
      font-weight:800;
      font-size:12px;
    }
    .mini-map-card{
      border:3px solid var(--ink);
      border-radius:var(--r);
      background:var(--yellow);
      box-shadow:var(--shadow-lg);
      padding:17px;
      position:relative;
      overflow:hidden;
    }
    .mini-map-card::before{
      content:"";
      position:absolute;
      inset:0;
      opacity:.14;
      background-image:
        radial-gradient(circle at 9px 9px, #fff 0 1.4px, transparent 1.7px),
        repeating-linear-gradient(0deg, rgba(11,61,145,.38) 0 9px, transparent 9px 20px);
      background-size:24px 24px,100% 42px;
      pointer-events:none;
      mix-blend-mode:multiply;
    }
    .mini-map-card > *{position:relative;z-index:1}
    .mini-map-head{
      display:flex;
      align-items:flex-start;
      justify-content:space-between;
      gap:12px;
      margin-bottom:13px;
    }
    .mini-map-head h3{
      font-size:27px;
      line-height:.96;
    }
    .region-map{
      display:grid;
      grid-template-columns:repeat(6,1fr);
      grid-auto-rows:36px;
      gap:7px;
      padding:12px;
      border:2.5px solid var(--ink);
      border-radius:10px;
      background:color-mix(in srgb,var(--paper) 82%,transparent);
      box-shadow:inset 3px 3px 0 rgba(21,19,13,.12);
    }
    .region-block{
      border:2px solid var(--ink);
      border-radius:7px;
      background:var(--paper3);
      color:var(--ink);
      font-size:11px;
      font-weight:900;
      display:flex;
      align-items:center;
      justify-content:center;
      text-align:center;
      line-height:1.05;
      cursor:pointer;
      box-shadow:3px 3px 0 var(--ink);
      transform:translate(0,0);
      transition:
        transform .14s var(--ease),
        box-shadow .14s var(--ease),
        background .14s var(--ease),
        color .14s var(--ease),
        filter .14s var(--ease);
      user-select:none;
      min-width:0;
    }
    .region-block:hover,
    .region-block:focus-visible{
      background:var(--blue);
      color:var(--paper);
      transform:translate(-2px,-2px);
      box-shadow:5px 5px 0 var(--ink);
      outline:none;
      filter:saturate(1.08);
    }
    .region-block:active{
      transform:translate(2px,2px) scale(.97);
      box-shadow:1px 1px 0 var(--ink);
    }
    .region-block.active{
      background:var(--red);
      color:var(--paper);
      transform:translate(1px,1px);
      box-shadow:2px 2px 0 var(--ink);
    }
    .region-block.hot{
      background:#DFF5EA;
      color:#087445;
    }
    .region-block.soon{
      background:#E9DFFF;
      color:#4B2382;
    }
    .region-block.overseas{
      background:var(--navy);
      color:var(--paper);
      grid-column:span 2;
    }
    .region-block.wide{grid-column:span 2}
    .region-block.tall{grid-row:span 2}
    .region-block.jeju{
      background:linear-gradient(145deg,#F7D7D7,#FBF3E2);
    }
    .region-info{
      display:flex;
      justify-content:space-between;
      align-items:center;
      gap:12px;
      margin-top:12px;
      border:2px solid var(--ink);
      border-radius:8px;
      background:var(--paper);
      box-shadow:3px 3px 0 var(--ink);
      padding:11px 12px;
    }
    .region-info b{
      display:block;
      font-size:14px;
    }
    .region-info small{
      display:block;
      color:var(--muted);
      font-weight:800;
      margin-top:2px;
    }
    .region-count{
      font-family:'Archivo';
      font-size:24px;
      font-weight:900;
      color:var(--red);
      line-height:1;
      text-align:right;
    }
    .map-legend{
      display:flex;
      flex-wrap:wrap;
      gap:8px;
      margin-top:12px;
      font-size:11px;
      font-weight:900;
      color:var(--muted);
    }
    .legend-dot{
      display:inline-flex;
      align-items:center;
      gap:5px;
      border:1.5px solid var(--ink);
      background:var(--paper3);
      border-radius:999px;
      padding:4px 8px;
    }
    .legend-dot::before{
      content:"";
      width:9px;
      height:9px;
      border-radius:50%;
      background:var(--blue);
      border:1px solid var(--ink);
    }
    .legend-dot.hot::before{background:var(--green)}
    .legend-dot.soon::before{background:#8B5CF6}
    .legend-dot.overseas::before{background:var(--navy)}
    @media(max-width:980px){
      .map-shell{grid-template-columns:1fr}
      .mini-map-card{order:-1}
      .map-scope-grid{grid-template-columns:1fr 1fr 1fr}
    }
    @media(max-width:620px){
      .region-map{grid-template-columns:repeat(4,1fr);grid-auto-rows:34px;gap:6px}
      .region-block{font-size:10px}
      .map-scope-grid{grid-template-columns:1fr}
      .region-block.overseas{grid-column:span 2}
    }

  
    /* v0.8.4 — more organic Korea SVG minimap */
    .geo-map-stage{
      border:2.5px solid var(--ink);
      border-radius:14px;
      background:
        radial-gradient(circle at 18% 12%, rgba(255,255,255,.72), transparent 22%),
        linear-gradient(180deg, rgba(220,232,255,.88), rgba(251,243,226,.78));
      box-shadow:inset 3px 3px 0 rgba(21,19,13,.12);
      padding:12px;
      position:relative;
      overflow:hidden;
    }
    .geo-map-stage::after{
      content:"";
      position:absolute;
      inset:0;
      opacity:.18;
      pointer-events:none;
      background-image:radial-gradient(rgba(11,61,145,.55) 1px, transparent 1.4px);
      background-size:12px 12px;
      mix-blend-mode:multiply;
    }
    .korea-svg{
      position:relative;
      z-index:1;
      display:block;
      width:100%;
      height:auto;
      filter:drop-shadow(4px 5px 0 rgba(21,19,13,.78));
    }
    .sea-label{
      font-family:'Archivo';
      font-weight:900;
      font-size:12px;
      letter-spacing:.1em;
      fill:rgba(13,33,73,.38);
    }
    .geo-region{
      fill:var(--paper3);
      stroke:var(--ink);
      stroke-width:3.2;
      cursor:pointer;
      transition:transform .16s var(--ease), fill .16s var(--ease), filter .16s var(--ease);
      transform-box:fill-box;
      transform-origin:center;
      vector-effect:non-scaling-stroke;
    }
    .geo-region.hot{fill:#DFF5EA}
    .geo-region.soon{fill:#E9DFFF}
    .geo-region.jeju{fill:#F7D7D7}
    .geo-region:hover,
    .geo-region:focus{
      fill:var(--blue);
      transform:translate(-2px,-2px) scale(1.018);
      filter:drop-shadow(3px 3px 0 var(--ink));
      outline:none;
    }
    .geo-region:active{
      transform:translate(2px,2px) scale(.982);
      filter:drop-shadow(1px 1px 0 var(--ink));
    }
    .geo-region.active{
      fill:var(--red);
      transform:translate(1px,1px) scale(.992);
      filter:drop-shadow(2px 2px 0 var(--ink));
    }
    .geo-label{
      pointer-events:none;
      font-family:'Pretendard';
      font-size:11px;
      font-weight:900;
      fill:var(--ink);
      text-anchor:middle;
      dominant-baseline:middle;
      paint-order:stroke;
      stroke:rgba(251,243,226,.82);
      stroke-width:4px;
      stroke-linejoin:round;
    }
    .geo-dot{
      pointer-events:none;
      fill:var(--red);
      stroke:var(--ink);
      stroke-width:2;
    }
    .overseas-row{
      display:grid;
      grid-template-columns:1fr;
      margin-top:10px;
    }
    .overseas-btn{
      border:2px solid var(--ink);
      border-radius:9px;
      background:var(--navy);
      color:var(--paper);
      box-shadow:3px 3px 0 var(--ink);
      padding:11px 12px;
      font-weight:900;
      cursor:pointer;
      transition:transform .14s var(--ease), box-shadow .14s var(--ease), background .14s;
    }
    .overseas-btn:hover{
      transform:translate(-2px,-2px);
      box-shadow:5px 5px 0 var(--ink);
      background:var(--blue);
    }
    .overseas-btn:active{
      transform:translate(2px,2px);
      box-shadow:1px 1px 0 var(--ink);
    }

    /* v0.8.4 — auth/profile/mypage */
    .profile-grid{
      display:grid;
      grid-template-columns:380px minmax(0,1fr);
      gap:22px;
      align-items:start;
    }
    .profile-card{
      border:3px solid var(--ink);
      border-radius:var(--r);
      background:var(--yellow);
      box-shadow:var(--shadow-lg);
      padding:23px;
      position:relative;
      overflow:hidden;
    }
    .profile-card::before{
      content:"";
      position:absolute;
      inset:0;
      opacity:.14;
      background-image:
        radial-gradient(circle at 9px 9px, #fff 0 1.5px, transparent 1.7px),
        repeating-linear-gradient(0deg, rgba(11,61,145,.38) 0 9px, transparent 9px 20px);
      background-size:24px 24px,100% 42px;
      pointer-events:none;
      mix-blend-mode:multiply;
    }
    .profile-card > *{position:relative;z-index:1}
    .profile-main{
      display:flex;
      gap:14px;
      align-items:center;
      margin:15px 0;
    }
    .profile-avatar{
      width:72px;
      height:72px;
      border:3px solid var(--ink);
      border-radius:50%;
      background:conic-gradient(var(--red) 0deg 180deg,var(--blue) 180deg 360deg);
      box-shadow:4px 4px 0 var(--ink);
      display:grid;
      place-items:center;
      color:var(--paper);
      font-family:'Archivo';
      font-size:24px;
      font-weight:900;
      flex:none;
    }
    .profile-avatar.is-guest{background:var(--paper)}
    .profile-avatar.is-guest svg{width:44px;height:36px;display:block}
    .profile-main h3{
      font-size:29px;
      line-height:1;
      margin-bottom:4px;
    }
    .profile-main p{
      font-size:13px;
      color:var(--muted);
      font-weight:800;
    }
    .auth-actions{
      display:grid;
      gap:10px;
      margin-top:17px;
    }
    .google-mark{
      width:19px;
      height:19px;
      border:2px solid var(--ink);
      border-radius:50%;
      display:inline-grid;
      place-items:center;
      background:var(--paper);
      color:var(--blue);
      font-family:'Archivo';
      font-size:12px;
      font-weight:900;
    }
    .mypage-panel{
      border:3px solid var(--ink);
      border-radius:var(--r);
      background:var(--paper3);
      box-shadow:var(--shadow-lg);
      padding:22px;
    }
    .mypage-head{
      display:flex;
      justify-content:space-between;
      align-items:flex-start;
      gap:14px;
      margin-bottom:18px;
    }
    .mypage-head h3{
      font-size:36px;
      line-height:1;
    }
    .metric-grid{
      display:grid;
      grid-template-columns:repeat(3,minmax(0,1fr));
      gap:12px;
      margin-bottom:18px;
    }
    .metric{
      border:2px solid var(--ink);
      border-radius:8px;
      background:var(--paper);
      box-shadow:3px 3px 0 var(--ink);
      padding:13px;
    }
    .metric .num{
      font-family:'Archivo';
      color:var(--blue);
      font-size:28px;
      font-weight:900;
      line-height:1;
    }
    .metric small{
      display:block;
      color:var(--muted);
      font-weight:900;
      margin-top:5px;
      font-size:12px;
    }
    .badge-row{
      display:flex;
      flex-wrap:wrap;
      gap:9px;
      margin:10px 0 18px;
    }
    .fk-badge{
      border:2px solid var(--ink);
      border-radius:999px;
      background:var(--paper);
      padding:7px 10px;
      box-shadow:2px 2px 0 var(--ink);
      font-size:12px;
      font-weight:900;
    }
    .activity-list{
      display:grid;
      gap:9px;
    }
    .activity{
      display:flex;
      justify-content:space-between;
      gap:10px;
      border:2px solid var(--ink);
      border-radius:8px;
      background:var(--paper);
      padding:11px 12px;
      font-size:13px;
      font-weight:800;
    }
    .activity span:last-child{
      font-family:'Archivo';
      font-weight:900;
      color:var(--red);
      white-space:nowrap;
    }
    .coming-profile{
      border:2px dashed var(--ink);
      border-radius:8px;
      padding:13px;
      background:color-mix(in srgb,var(--paper) 64%,transparent);
      font-size:13px;
      font-weight:800;
      color:var(--muted);
      margin-top:14px;
    }
    @media(max-width:930px){
      .profile-grid{grid-template-columns:1fr}
      .metric-grid{grid-template-columns:1fr 1fr 1fr}
    }
    @media(max-width:620px){
      .metric-grid{grid-template-columns:1fr}
      .profile-main{align-items:flex-start}
    }

  
    /* v0.8.5 — white block 3D-ish korea minimap */
    .mini-map-card{
      background:#f4efe3 !important;
    }
    .geo-map-stage{
      border:2.5px solid var(--ink);
      border-radius:16px;
      background:
        radial-gradient(circle at 24% 18%, rgba(255,255,255,.96), rgba(255,255,255,.76) 28%, rgba(233,231,225,.65) 62%, rgba(221,219,214,.88) 100%);
      box-shadow:
        inset 0 1px 0 rgba(255,255,255,.7),
        inset 0 -10px 20px rgba(0,0,0,.06);
      padding:16px;
      position:relative;
      overflow:hidden;
      min-height:430px;
    }
    .geo-map-stage::before{
      content:"";
      position:absolute;
      inset:0;
      background:
        radial-gradient(circle at 70% 22%, rgba(255,255,255,.55), transparent 22%),
        radial-gradient(circle at 26% 78%, rgba(255,255,255,.35), transparent 28%);
      pointer-events:none;
    }
    .geo-map-stage::after{
      content:"";
      position:absolute;
      left:0; right:0; bottom:0;
      height:110px;
      background:linear-gradient(180deg, rgba(0,0,0,0), rgba(0,0,0,.06));
      pointer-events:none;
      mix-blend-mode:multiply;
    }
    .korea-svg{
      width:100%;
      max-width:320px;
      margin:0 auto;
      display:block;
      overflow:visible;
      filter:drop-shadow(0 22px 20px rgba(0,0,0,.18));
    }
    .sea-label{
      display:none;
    }
    .geo-base-shadow{
      fill:#8d8579;
      opacity:.42;
      filter:blur(0.35px);
    }
    .geo-island-shadow{
      fill:#8d8579;
      opacity:.35;
      filter:blur(.5px);
    }
    .geo-region{
      fill:#ffffff;
      stroke:#1b1913;
      stroke-width:2.4;
      cursor:pointer;
      transition:
        transform .16s var(--ease),
        fill .18s var(--ease),
        filter .18s var(--ease),
        stroke .18s var(--ease);
      transform-box:fill-box;
      transform-origin:center;
      vector-effect:non-scaling-stroke;
      filter:drop-shadow(0 3px 0 rgba(72,65,54,.72)) drop-shadow(0 6px 6px rgba(0,0,0,.14));
    }
    .geo-region.hot{
      fill:#ffffff;
    }
    .geo-region.soon{
      fill:#ffffff;
    }
    .geo-region.jeju{
      fill:#ffffff;
    }
    .geo-region:hover,
    .geo-region:focus{
      fill:#dfe8ff;
      stroke:#0b3d91;
      transform:translate(-2px,-4px);
      filter:drop-shadow(0 4px 0 rgba(39,54,103,.85)) drop-shadow(0 8px 6px rgba(0,0,0,.18));
      outline:none;
    }
    .geo-region.active{
      fill:#e9f7ef;
      stroke:#0f7a48;
      transform:translate(-1px,-2px);
      filter:drop-shadow(0 4px 0 rgba(25,113,70,.85)) drop-shadow(0 8px 6px rgba(0,0,0,.18));
    }
    .geo-region[data-region="서울"].active,
    .geo-region[data-region="부산"].active{
      fill:#ffe3e3;
      stroke:#c92a2a;
      filter:drop-shadow(0 4px 0 rgba(150,31,31,.88)) drop-shadow(0 8px 6px rgba(0,0,0,.18));
    }
    .geo-label{
      pointer-events:none;
      font-family:'Pretendard';
      font-size:10px;
      font-weight:900;
      fill:#1b1913;
      text-anchor:middle;
      dominant-baseline:middle;
      paint-order:stroke;
      stroke:rgba(255,255,255,.92);
      stroke-width:4px;
      stroke-linejoin:round;
    }
    .geo-dot{
      display:none;
    }
    /* Real peninsula map (scripts/generate-korea-map.js) */
    .geo-region{stroke-width:1.6}
    .geo-north{
      fill:#dcd8cf;
      stroke:#a19b8f;
      stroke-width:1;
      vector-effect:non-scaling-stroke;
      stroke-linejoin:round;
      filter:none;
      pointer-events:none;
    }
    .geo-north-label{
      pointer-events:none;
      font-family:'Pretendard';
      font-size:10px;
      font-weight:800;
      fill:#8f887b;
      text-anchor:middle;
      dominant-baseline:middle;
      letter-spacing:.2em;
    }
    .geo-north-sublabel{
      pointer-events:none;
      font-family:'Pretendard';
      font-size:8px;
      font-weight:700;
      fill:#a19b8f;
      text-anchor:middle;
      dominant-baseline:middle;
      letter-spacing:.1em;
    }
    .geo-label{font-size:11px}
    .geo-label-sm{font-size:9px;stroke-width:3px}
    .map-credit{margin-top:10px;font-size:11px;font-weight:700;color:var(--muted)}
    .geo-hit,
    .geo-hit:hover,
    .geo-hit:focus,
    .geo-hit.active{
      fill:transparent;
      stroke:none;
      filter:none;
      transform:none;
    }
    /* Mirror the 세종 hit circle's state onto the 세종 region itself */
    .korea-svg:has(.geo-hit:hover) .geo-region[data-region="세종"]:not(.geo-hit),
    .korea-svg:has(.geo-hit:focus) .geo-region[data-region="세종"]:not(.geo-hit){
      fill:#dfe8ff;
      stroke:#0b3d91;
    }
    .korea-svg:has(.geo-hit.active) .geo-region[data-region="세종"]:not(.geo-hit){
      fill:#e9f7ef;
      stroke:#0f7a48;
    }
    .geo-region-proxy{
      border:2px solid var(--ink);
      border-radius:10px;
      background:var(--card);
      color:var(--ink);
      box-shadow:0 9px 0 rgba(72,65,54,.75), 0 17px 14px rgba(0,0,0,.12);
      padding:12px 13px;
      font-weight:900;
      cursor:pointer;
      transition:transform .16s var(--ease), box-shadow .16s var(--ease), background .16s var(--ease);
    }
    .geo-region-proxy:hover{
      transform:translateY(-3px);
      background:#dfe8ff;
      box-shadow:0 12px 0 rgba(39,54,103,.82), 0 20px 14px rgba(0,0,0,.14);
    }
    .geo-region-proxy.active{
      background:#eef8f1;
      box-shadow:0 11px 0 rgba(25,113,70,.82), 0 20px 14px rgba(0,0,0,.14);
    }
    .region-info{
      margin-top:18px;
      background:var(--card);
    }
    .map-legend{
      margin-top:14px;
      gap:10px;
    }
    .legend-dot{
      background:var(--card);
      box-shadow:2px 2px 0 rgba(21,19,13,.18);
    }
    .legend-dot::before{
      background:var(--card);
    }
    .legend-dot.hot::before{background:#e9f7ef}
    .legend-dot.soon::before{background:#dfe8ff}
    .legend-dot.overseas::before{background:#fff}
/* v0.9 IA shell */
main:focus{outline:none}.top-nav .nav-links a.active{background:var(--ink);color:var(--paper)}.bottom-nav a.active{background:var(--yellow);color:var(--ink);border-radius:12px}.home-hero{padding-bottom:28px}.panel-copy,.profile-note,.prototype-note{font-weight:800;color:var(--muted)}.footer-links{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px;font-weight:900}.route-section{animation:routeIn .18s var(--ease)}@keyframes routeIn{from{opacity:.88;transform:translateY(4px)}to{opacity:1;transform:none}}.quick-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.quick-grid,.intent-grid,.resource-grid,.trust-grid,.helper-grid,.preview-grid{display:grid;gap:16px}.quick-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.quick-action,.intent-card,.intent-tab,.preview-card,.resource-card,.trust-card,.helper-grid article{border:2.5px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow);padding:16px;text-decoration:none;transition:transform .14s var(--ease),box-shadow .14s var(--ease)}.quick-action:hover,.intent-card:hover,.intent-tab:hover,.preview-card:hover,.resource-card:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-lg)}.quick-action span,.intent-card span,.intent-tab span{width:36px;height:36px;display:grid;place-items:center;border:2px solid var(--ink);border-radius:50%;background:var(--yellow);font-family:'Archivo';font-weight:900;margin-bottom:10px}.quick-action b,.intent-card b,.intent-tab b{display:block;font-weight:900}.quick-action small,.intent-card small,.intent-tab small,.resource-meta,.next-step small{display:block;color:var(--muted);font-weight:800;font-size:12px;margin-top:4px}.quick-editor{display:none;margin-top:18px;border:3px solid var(--ink);border-radius:var(--r);background:var(--yellow);box-shadow:var(--shadow-lg);padding:18px}.quick-editor.open{display:block}.quick-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0}.quick-option{display:grid;grid-template-columns:auto 1fr;gap:8px;border:2px solid var(--ink);border-radius:7px;background:var(--paper3);padding:10px;font-weight:900}.quick-option input{width:18px;height:18px}.quick-option small{grid-column:2;color:var(--muted);font-size:12px}.intent-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.preview-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.action-command{border:3px solid var(--ink);border-radius:var(--r);background:var(--navy);color:var(--paper);box-shadow:var(--shadow-lg);padding:24px;margin-bottom:20px}.action-command h3{font-size:42px;color:var(--paper);margin:10px 0}.action-command p{max-width:760px;color:rgba(251,243,226,.86);font-weight:800}.intent-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:20px}.intent-tab.active{background:var(--yellow)}.selected-intent{display:grid;grid-template-columns:1fr 320px;gap:18px;align-items:stretch;margin-bottom:20px}.selected-intent>div,.next-step{border:2.5px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow);padding:18px}.resource-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.resource-card{display:flex;flex-direction:column;gap:12px}.resource-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.resource-top h3{font-size:28px;line-height:1.05}.resource-source,.link-status{display:inline-flex;border:2px solid var(--ink);border-radius:999px;padding:4px 9px;font-size:11px;font-weight:900;background:var(--paper)}.resource-source.official{background:#DCE8FF;color:var(--blue)}.resource-source.civic_project{background:var(--yellow)}.link-status.reachable{background:#DFF5EA;color:#087445}.link-status.needs_review{background:#F7D7D7;color:var(--red2)}.resource-warning{border:2px dashed var(--ink);border-radius:7px;background:var(--paper2);padding:10px;font-weight:800}.resource-badges{display:flex;gap:7px;flex-wrap:wrap}.resource-meta{display:flex;gap:10px;flex-wrap:wrap;border-top:1.5px dashed #cbbf9f;padding-top:10px}.resource-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:auto}.decision-helper{margin-top:28px}.sec-head.mini{margin-bottom:12px}.badge-cloud{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.civic-puzzle-note{margin-top:18px;border:2.5px dashed var(--ink);border-radius:var(--r);padding:16px;background:var(--paper2);font-weight:800;color:var(--muted)}.civic-puzzle-note p{margin-top:10px}.drop input{margin-top:12px}.region-count small{display:block;font-size:10px;color:var(--muted)}.resource-dialog{border:0;background:transparent;padding:0;max-width:min(560px,calc(100vw - 32px))}.resource-dialog::backdrop{background:rgba(13,33,73,.55)}.dialog-card{border:3px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow-lg);padding:24px;position:relative}.dialog-card h2{font-size:34px}.dialog-close{position:absolute;right:12px;top:12px;width:36px;height:36px;border:2px solid var(--ink);border-radius:50%;background:var(--yellow);font-weight:900;cursor:pointer}.benefit-roadmap{margin-top:22px}
@media(max-width:980px){.quick-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.intent-grid,.preview-grid,.resource-grid,.trust-grid{grid-template-columns:1fr 1fr}.intent-tabs{grid-template-columns:1fr 1fr}.selected-intent{grid-template-columns:1fr}.quick-options{grid-template-columns:1fr 1fr}}
@media(max-width:700px){body{padding-bottom:86px}.quick-head{display:block}.quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.intent-grid,.preview-grid,.resource-grid,.trust-grid,.helper-grid{grid-template-columns:1fr}.intent-tabs{grid-template-columns:1fr}.action-command h3{font-size:32px}.quick-options{grid-template-columns:1fr}.resource-actions .btn{width:100%}.nav-cta .btn-blue{display:none}.bottom-nav{display:grid}.bottom-nav{grid-template-columns:repeat(5,1fr)}}

/* Mobile responsive recovery */
.hero-grid > *,
.today-grid > *,
.quick-grid > *,
.intent-grid > *,
.intent-tabs > *,
.resource-grid > *,
.selected-intent > *,
.preview-grid > *,
.trust-grid > *,
.helper-grid > *,
.profile-grid > *,
.map-shell > *,
.submit-grid > *,
.benefit-head > *,
.benefit-submit > *,
.resource-top > *,
.mypage-head > *,
.activity > *,
.biz-top > *,
.footer-links > *{
  min-width:0;
}
.btn,
.chip,
.fk-badge,
.resource-source,
.link-status{
  max-width:100%;
  white-space:normal;
  overflow-wrap:anywhere;
}
.resource-card,
.preview-card,
.quick-action,
.intent-card,
.intent-tab,
.trust-card,
.helper-grid article,
.profile-card,
.mypage-panel,
.form-card,
.board,
.dice,
.biz,
.benefit-stage,
.map-copy-card,
.mini-map-card{
  max-width:100%;
}
.bottom-nav{
  top:auto;
  align-items:stretch;
  grid-auto-rows:minmax(46px,auto);
  bottom:max(6px,env(safe-area-inset-bottom));
}
.bottom-nav a{
  min-width:0;
  min-height:46px;
  padding:3px 2px;
  line-height:1.1;
  border-radius:12px;
}

@media(max-width:980px){
  .resource-top{align-items:flex-start}
  .profile-main > div{min-width:0}
  .profile-main p,
  .profile-main h3,
  .activity span:first-child{
    overflow-wrap:anywhere;
  }
}

@media(max-width:700px){
  /* P0: Mobile shell restoration - normal document scrolling */
  /* Legacy grid assumed ticker/top-nav/page-scroll/bottom-nav as direct body children, */
  /* but #164 changed structure to body > app-shell > app-body > (ticker/top-nav/page-scroll) */
  html{
    height:auto;
    min-height:100%;
    overflow-x:hidden;
  }
  body{
    display:block;
    height:auto;
    min-height:100dvh;
    overflow-x:hidden;
    overflow-y:auto;
    padding-bottom:82px;
  }
  .app-shell{
    display:block;
    width:100%;
    min-width:0;
    min-height:auto;
  }
  .app-body{
    display:block;
    width:100%;
    min-width:0;
    min-height:auto;
    overflow-x:clip;
  }
  .page-scroll{
    width:100%;
    min-width:0;
    min-height:auto;
    overflow:visible;
    overscroll-behavior:auto;
  }
  .bottom-nav{
    position:fixed;
    left:8px;
    right:8px;
    bottom:max(6px,env(safe-area-inset-bottom));
    margin:0;
    z-index:120;
  }
  .top-nav .wrap{padding-left:16px;padding-right:16px}
  .nav-inner{height:64px;gap:10px}
  .logo-mark{width:40px;height:33px}
  .logo-text b{font-size:20px}
  .hero{padding:34px 0 30px}
  .hero h1{font-size:clamp(46px,14vw,66px);line-height:.94;margin-bottom:18px}
  .hero p{font-size:16px;line-height:1.58}
  .kicker{max-width:100%;align-items:flex-start;line-height:1.25;letter-spacing:.08em;white-space:normal}
  .hero-cta{display:grid;grid-template-columns:1fr;gap:10px}
  .hero-cta .btn{width:100%}
  .hero-panel,
  .board,
  .dice,
  .form-card,
  .mypage-panel,
  .profile-card,
  .action-command,
  .selected-intent > div,
  .next-step,
  .resource-card,
  .trust-card,
  .helper-grid article{
    padding:18px;
  }
  .board-title,
  .mypage-head,
  .resource-top,
  .biz-top{
    align-items:flex-start;
    flex-direction:column;
  }
  .score-row{grid-template-columns:1fr 1fr}
  .challenge-wall{columns:1;padding:16px}
  .challenge-img{min-height:150px}
  .challenge-post:nth-child(2) .challenge-img,
  .challenge-post:nth-child(6) .challenge-img{min-height:180px}
  .bridge-actions .btn,
  .benefit-card .mini-actions .btn,
  .biz-actions .btn{
    width:100%;
  }
  .benefit-card{width:min(282px,calc(100vw - 64px))}
  .benefit-card .mini-actions{display:grid;grid-template-columns:1fr}
  .benefit-submit .btn{width:100%}
  .map-shell{gap:16px}
  .geo-map-stage{min-height:380px;padding:12px}
  .korea-svg{max-width:min(280px,100%)}
  .region-info{align-items:flex-start;flex-direction:column}
  .region-count{text-align:left}
  .map-legend{gap:6px}
  .profile-main{align-items:flex-start}
  .type-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .type-btn{text-align:center;padding:11px}
  .drop{text-align:left;padding:14px}
  input[type="file"]{font-size:12px;padding:10px}
  .principles label{min-width:0}
  .dialog-card{padding:20px}
  .dialog-card h2{font-size:30px;line-height:1}
  footer{padding-bottom:48px}
  .footer-links a{overflow-wrap:anywhere}

}

@media(max-width:560px){
  .nav-cta{display:none}
  .sec{padding:28px 0}
  .sec-head{margin-bottom:16px}
  .sec-head h2{font-size:clamp(24px,8vw,32px)}
  .sec-lead{margin:-8px 0 16px;font-size:14px}
  .action-command{padding:18px;margin-bottom:16px}
  .action-command h3{font-size:clamp(26px,8vw,32px)}
  .action-command p{font-size:14px}
  .resource-top{display:grid;grid-template-columns:1fr;gap:10px}
  .resource-actions{display:grid;grid-template-columns:1fr}
  .resource-actions .btn{width:100%}
  .metric-grid{grid-template-columns:1fr}
  .activity{align-items:flex-start;flex-direction:column}
  /* density: tighter cards and lists */
  .quick-grid,.intent-grid,.resource-grid,.trust-grid,.helper-grid,.preview-grid{gap:10px}
  .quick-action,.intent-card,.intent-tab,.preview-card,.resource-card,.trust-card,.helper-grid article{padding:12px}
  .live-card,.shop-card,.pol-card,.field-card{padding:12px}
  .live-list,.shop-list,.pol-list{grid-template-columns:1fr;gap:10px}
  .live-card-title{font-size:15px}
  .field-card-body{padding:12px}
  .field-card-title{font-size:17px}
  .home-hero{padding-bottom:20px}
  .hero-grid{gap:16px}
  .board,.dice{padding:14px}
  .mission{padding:10px}
}

@media(max-width:480px){
  .wrap{padding:0 14px}
  .ticker .track{font-size:11px;letter-spacing:.08em}
  .ticker span{margin:0 14px}
  .hero h1{font-size:clamp(42px,14vw,58px)}
  .hero-panel h3,
  .dice h3,
  .board-title h3{font-size:25px}
  .mission{grid-template-columns:auto 1fr;padding:11px}
  .mission .btn{grid-column:1/-1;width:100%}
  .quick-grid{gap:10px}
  .quick-action,
  .intent-card,
  .intent-tab,
  .preview-card,
  .resource-card,
  .trust-card,
  .helper-grid article{padding:14px}
  /* bottom-nav sizing handled by final mobile override below */
}

@media(max-width:360px){
  .wrap{padding:0 12px}
  .hero h1{font-size:40px}
  .hero p,
  .sec-lead{font-size:15px}
  .quick-grid{grid-template-columns:1fr}
  .type-grid{grid-template-columns:1fr}
  .score-row{grid-template-columns:1fr}
  .geo-map-stage{min-height:340px}
  .benefit-card{width:min(260px,calc(100vw - 56px))}
  /* bottom-nav font-size handled by final mobile override below */
}

/* 청원 및 입법예고 섹션 스타일 */
.petition-legislative-section{background:var(--paper2)}
.petition-legislative-tabs{display:flex;gap:10px;margin-bottom:24px}.tab-btn{flex:1;border:2.5px solid var(--ink);border-radius:var(--r);background:var(--paper3);padding:14px;font-size:16px;font-weight:900;cursor:pointer;box-shadow:var(--shadow);transition:all .14s var(--ease)}.tab-btn.active{background:var(--blue);color:var(--paper);transform:translate(-2px,-2px);box-shadow:var(--shadow-lg)}.tab-btn:hover{transform:translate(-1px,-1px)}.tab-content{display:none}.tab-content.active{display:block}
.section-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:12px}.filter-group{display:flex;gap:8px}
.petition-list,.bill-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:18px;margin-bottom:32px}.petition-card,.bill-card{border:2.5px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow);padding:18px;transition:transform .16s var(--ease),box-shadow .16s var(--ease)}.petition-card:hover,.bill-card:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-lg)}
.petition-header,.bill-header{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}.petition-title,.bill-title{font-size:19px;line-height:1.35;margin-bottom:14px;color:var(--ink)}.petition-progress{margin-bottom:14px}.progress-bar{height:10px;background:var(--paper);border:2px solid var(--ink);border-radius:5px;overflow:hidden;margin-bottom:8px}.progress-fill{height:100%;background:var(--blue);transition:width .3s ease}.progress-text{display:flex;justify-content:space-between;font-size:12px;font-weight:900;color:var(--muted)}.bill-meta{font-size:13px;font-weight:700;color:var(--muted);margin-bottom:12px}
.petition-warning,.bill-warning{background:rgba(255,199,46,.3);border:2px solid var(--ink);border-radius:6px;padding:10px 12px;margin-bottom:12px;font-size:12px;font-weight:900;color:var(--muted);line-height:1.5}
.participation-guide{border:3px solid var(--ink);border-radius:var(--r);background:var(--navy);color:var(--paper);box-shadow:var(--shadow-lg);padding:24px;margin-bottom:24px}.participation-guide h3{font-size:26px;margin-bottom:14px;color:var(--paper)}.participation-guide ul{list-style:none;padding:0}.participation-guide li{margin-bottom:11px;padding-left:20px;position:relative;color:rgba(251,243,226,.88);font-weight:700;line-height:1.58}.participation-guide li::before{content:"▸";position:absolute;left:0;color:var(--yellow);font-weight:900}.participation-guide li b{color:var(--paper);font-weight:900}
.source-info{border:2.5px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow);padding:20px}.source-info h4{font-size:20px;margin-bottom:10px;font-family:'Black Han Sans'}.source-info p{font-size:14px;font-weight:700;color:var(--ink);margin-bottom:10px}.source-info ul{list-style:none;padding:0;display:grid;gap:8px}.source-info li{font-size:14px}.source-info a{text-decoration:underline;font-weight:900;color:var(--blue)}
.empty-state{text-align:center;padding:48px 24px;background:var(--paper);border:2.5px solid var(--ink);border-radius:var(--r);box-shadow:var(--shadow)}.empty-state p{font-size:16px;font-weight:800;color:var(--muted);margin-bottom:8px}.empty-note{font-size:13px;font-weight:700;color:var(--muted)}
.loading-state{text-align:center;padding:64px 24px}.loading-state p{font-size:18px;font-weight:900;color:var(--blue)}
.featured-card{border:3px solid var(--ink);background:linear-gradient(135deg,rgba(201,42,42,.12) 0%,rgba(255,199,46,.18) 100%);box-shadow:var(--shadow-lg)}
@media(max-width:760px){.petition-list,.bill-list{grid-template-columns:1fr}.tab-btn{font-size:14px;padding:12px}.section-controls{flex-direction:column;align-items:stretch}}
.profile-avatar-img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.btn.is-disabled{opacity:.55;cursor:not-allowed}

/* ── 청원·법안 카드: 국회 원문 발췌 미리보기 (#preview) ── */
.pv-card .pv-meta{font-size:12.5px;font-weight:700;color:var(--muted);margin:-6px 0 10px;line-height:1.5}
.pv-card .bill-header{justify-content:flex-start}
.pv-ex{border:2px solid var(--ink);border-radius:6px;background:var(--paper);padding:10px 12px;margin-bottom:12px}
.pv-lab{display:inline-block;font-size:11px;font-weight:900;background:var(--ink);color:var(--paper);border-radius:4px;padding:3px 6px;margin-bottom:6px}
.pv-ex p{margin:0;font-size:13.5px;line-height:1.6;color:var(--ink);word-break:keep-all;overflow-wrap:anywhere}
.pv-ex .pv-full p+p{margin-top:8px}
.pv-ex .clamp{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.pv-ex h4{font-size:13px;margin:10px 0 4px;font-weight:900}
.pv-ex h4:first-child{margin-top:2px}
.pv-ex .pv-src{font-size:11.5px;color:var(--muted);font-weight:700;margin-top:10px;line-height:1.5}
.pv-ex .pv-src a,.pv-error-act a{color:var(--blue);font-weight:900}
.pv-card[aria-busy="true"] .pv-short{color:var(--muted)}
.pv-error{color:var(--red2)!important;font-weight:800}
.pv-error-act{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:8px!important}
.pv-stats{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.pv-stat{border:2px solid var(--ink);border-radius:6px;padding:6px 9px;background:var(--card);font-size:12.5px;font-weight:900;line-height:1.25}
.pv-stat small{display:block;font-size:10px;font-weight:800;color:var(--muted);margin-top:2px}
.pv-stat.chip-red{background:#FBE3E3;color:var(--ink)}.pv-stat.chip-yellow{background:#FFF2C2;color:var(--ink)}.pv-stat.chip-dark{background:var(--card);color:var(--ink)}
.pv-note{font-size:11.5px;font-weight:700;color:var(--muted);background:rgba(255,199,46,.25);border:2px dashed var(--ink);border-radius:6px;padding:8px 10px;margin:0 0 12px;line-height:1.5}
.pv-act{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.pv-toggle{background:var(--paper)}
.pv-toggle:focus-visible,.pv-retry:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.pv-card .pv-warning{margin:12px 0 0}
.pv-card .petition-progress{margin-bottom:12px}
.pv-src-tag{font-size:11px;font-weight:800;color:var(--muted)}
.pv-dl{display:grid;grid-template-columns:78px 1fr;gap:4px 8px;font-size:12.5px;margin:0 0 10px}
.pv-dl dt{font-weight:900;color:var(--muted)}.pv-dl dd{margin:0;font-weight:700}
.pv-dl:empty{display:none}
.pv-card [hidden],.pv-card[hidden]{display:none!important}

/* ── vforkorea AI 분석 (비공식): 반대의견 · 숨은의도 ── */
.vfk-ai{border:2px dashed #8a7f73;border-radius:6px;background:#FFF8F0;padding:10px 12px;margin:0 0 12px}
.vfk-ai-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin-bottom:8px}
.vfk-ai-head small{font-size:11px;font-weight:800;color:var(--muted)}
.vfk-ai-chip{background:#EDE7FF;color:#3f2a86;text-decoration:none;font-size:11px}
.vfk-ai-chip:focus-visible,.vfk-copy:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.vfk-ai-row{display:flex;align-items:flex-start;gap:8px}
.vfk-ai-row+.vfk-ai-row{margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}
.vfk-ai-text{flex:1;margin:0;font-size:13px;line-height:1.55;color:var(--ink);word-break:keep-all;overflow-wrap:anywhere}
.vfk-ai-lab{font-weight:900;white-space:nowrap}
.vfk-ai-opposition .vfk-ai-lab{color:var(--red2)}
.vfk-ai-hidden .vfk-ai-lab{color:#6b3fa0}
.vfk-copy{flex:none;background:var(--paper);padding:5px 10px;font-size:12px;box-shadow:2px 2px 0 var(--ink)}
.toast{max-width:min(92vw,520px);line-height:1.45}

/* 홈 히어로 사진(한미동맹): 제목 오른쪽 빈 공간. em = h1 글자 크기라 KOREA 줄 옆에 반응형으로 맞춰짐.
   가장자리는 mask로 종이 배경(#FBF3E2)에 부드럽게 녹임. 장식용(aria-hidden, alt=""). */
.home-hero .hero-grid{grid-template-columns:minmax(0,1fr)}
.home-hero h1{position:relative;z-index:0;isolation:isolate;overflow:visible}
.hero-photo{position:absolute;right:0;top:1em;width:min(calc(100% - 3.6em),3.3em);height:2.85em;z-index:-1;pointer-events:none;user-select:none;opacity:.88;
  -webkit-mask-image:linear-gradient(to right,transparent 0,#000 38%,#000 90%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 12%,#000 66%,transparent 100%);
  mask-image:linear-gradient(to right,transparent 0,#000 38%,#000 90%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 12%,#000 66%,transparent 100%);
  -webkit-mask-composite:source-in;mask-composite:intersect}
.hero-photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 35%}
@media(min-width:921px){.hero-photo{right:-28px;width:min(calc(100% + 28px - 3.6em),3.6em);opacity:1;
  -webkit-mask-image:linear-gradient(to right,transparent 0,#000 34%,#000 94%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 10%,#000 70%,transparent 100%);
  mask-image:linear-gradient(to right,transparent 0,#000 34%,#000 94%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 10%,#000 70%,transparent 100%)}}
@media print{.hero-photo{display:none}}

/* ===== 미션 보드게임 ===== */
.board-wrap{margin-top:12px}
.lap-badge{display:flex;align-items:center;gap:10px;background:var(--card);border:3px solid var(--ink);border-radius:12px;box-shadow:3px 3px 0 var(--ink);padding:10px 14px;margin-bottom:12px}
.lap-flag{font-size:26px}
.lap-badge b{font-size:17px;display:block}
.lap-badge small{color:var(--muted);font-size:12px;font-weight:700}
.board-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;background:var(--paper2);border:3px solid var(--ink);border-radius:14px;box-shadow:4px 4px 0 var(--ink);padding:8px}
.board-tile{position:relative;background:var(--card);border:2.5px solid var(--ink);border-radius:8px;min-height:64px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 4px;text-align:center;box-shadow:2px 2px 0 var(--ink)}
.board-tile .tile-icon{font-size:18px;line-height:1}
.board-tile .tile-label{font-size:10px;font-weight:800;line-height:1.3;word-break:keep-all}
.tile-start{background:var(--ink);color:#fff}
.tile-start .tile-label{color:#fff}
.tile-star{background:#FFF3C4}
.tile-ladder{background:#DCEBFF}
.board-tile.has-token{outline:3px solid var(--red);outline-offset:-3px}
.board-token{position:absolute;top:-14px;right:-6px;font-size:28px;line-height:1;filter:drop-shadow(2px 2px 0 rgba(0,0,0,.35));z-index:2}
.board-token.hop{animation:token-hop .32s ease}
@keyframes token-hop{0%{transform:translateY(-14px) scale(1.2)}60%{transform:translateY(2px) scale(.95)}100%{transform:translateY(0) scale(1)}}
.board-center{grid-row:2/5;grid-column:2/5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:var(--paper);border:3px dashed var(--ink);border-radius:12px;padding:12px}
.board-dice{width:64px;height:64px;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:900;background:var(--card);border:3px solid var(--ink);border-radius:12px;box-shadow:3px 3px 0 var(--ink)}
.board-dice.rolling{animation:dice-shake .08s infinite}
@keyframes dice-shake{0%{transform:rotate(-8deg)}100%{transform:rotate(8deg)}}
.board-result{margin:12px 0 0;font-weight:800;font-size:15px;line-height:1.5;min-height:44px}
.token-panel{margin-top:12px;background:var(--card);border:3px solid var(--ink);border-radius:12px;box-shadow:3px 3px 0 var(--ink);padding:12px}
.token-panel strong{display:block;margin-bottom:8px}
.token-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.token-row>span{flex:none;font-size:13px;font-weight:800;color:var(--muted);width:36px}
.token-opts{display:flex;gap:8px;flex-wrap:wrap}
.token-opt{width:44px;height:44px;display:flex;align-items:center;justify-content:center;font-size:24px;background:var(--paper);border:2.5px solid var(--ink);border-radius:10px;box-shadow:2px 2px 0 var(--ink);cursor:pointer}
.token-opt.selected{outline:3px solid var(--red);outline-offset:1px;background:#fff}
@media(max-width:560px){
  .board-tile{min-height:52px}
  .board-tile .tile-label{font-size:9px}
  .board-token{font-size:22px;top:-11px}
  .board-dice{width:52px;height:52px;font-size:26px}
}

/* 헤더 로그인/아바타 */
.header-avatar{display:inline-flex;align-items:center;justify-content:center;flex:none;width:34px;height:34px;border-radius:50%;background:var(--blue);color:#fff;font-weight:900;font-size:16px;text-decoration:none;border:2.5px solid var(--ink);box-shadow:2px 2px 0 var(--ink)}
.header-avatar:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}

/* 헤더 FK identity (대한인 handle) */
.header-identity{display:inline-flex;align-items:center;gap:6px;flex:none;white-space:nowrap;text-decoration:none;color:var(--ink);background:var(--card);border:2.5px solid var(--ink);border-radius:999px;box-shadow:2px 2px 0 var(--ink);padding:6px 12px;font-weight:900;font-size:13px;line-height:1}
.header-identity:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}
.header-identity-chev{color:var(--red);font-size:14px}
.header-identity-label{max-width:120px;overflow:hidden;text-overflow:ellipsis}
@media(max-width:560px){
  .header-identity-label{max-width:64px}
  .header-identity{padding:5px 9px;font-size:12px}
}

/* 프로필 사진 업로드 */
.avatar-upload{margin:10px 0;padding:10px;background:var(--paper);border:2.5px solid var(--ink);border-radius:10px;box-shadow:2px 2px 0 var(--ink)}
.avatar-actions{display:flex;gap:8px;margin-bottom:6px}
.avatar-note{font-size:11px;color:var(--muted);margin:0;font-weight:700}
/* 닉네임 변경 (FK-NICKNAME-EDIT) */
.nickname-edit{margin-top:12px;padding-top:12px;border-top:1.5px dashed #cbbf9f}
.nickname-row{display:flex;align-items:center;gap:8px}
.nickname-label{font-size:12px;font-weight:800;color:var(--muted)}
.nickname-row strong{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}
.nickname-row .btn{margin-left:auto}
.nickname-form{margin-top:10px}
.nickname-input-row{display:flex;gap:8px}
.nickname-input-row input{flex:1;min-width:0;padding:8px 10px;border:2px solid var(--ink);border-radius:7px;background:var(--card);font-size:14px;font-weight:700}
.nickname-note{font-size:11px;color:var(--muted);margin:6px 0 0;font-weight:700}
.nickname-msg{font-size:13px;font-weight:800;min-height:1.2em;margin:6px 0 0}
.nickname-msg-error{color:#b3261e}
.nickname-msg-ok{color:#087445}
.nickname-actions{display:flex;gap:8px;margin-top:8px}
.avatar-preview-wrap{margin-bottom:8px}
.avatar-preview-wrap img{width:96px;height:96px;object-fit:cover;border-radius:50%;border:3px solid var(--ink);display:block;margin-bottom:8px}
.avatar-preview-actions{display:flex;gap:8px}
.header-identity-img{width:22px;height:22px;border-radius:50%;object-fit:cover;flex:none}
.profile-avatar-img{width:100%;height:100%;object-fit:cover;border-radius:50%}

/* LIVE DESK */
.live-command{background:var(--paper);border:3px solid var(--ink);border-radius:12px;padding:14px;box-shadow:4px 4px 0 var(--ink);margin-bottom:14px}
.live-search-row{margin-bottom:10px;display:flex;gap:8px}
.live-search-row input{flex:1;min-width:0;padding:10px 12px;border:2.5px solid var(--ink);border-radius:8px;font-size:15px;background:var(--card);color:var(--ink)}
/* FK SVG icon set */
.fk-icon{width:1.15em;height:1.15em;flex-shrink:0;vertical-align:-0.2em}
.btn .fk-icon,.filter-btn .fk-icon{width:1.1em;height:1.1em}
#theme-toggle .fk-icon{width:1.2em;height:1.2em}
.bottom-nav a .fk-icon{width:1.35em;height:1.35em;display:block;margin:0 auto 2px}
.live-filter-toggle{flex-shrink:0;padding:10px 14px;border:2.5px solid var(--ink);border-radius:8px;background:var(--c-yellow);font-weight:800;font-size:14px;cursor:pointer;color:var(--ink);white-space:nowrap}
.live-command.collapsed #live-filters{display:none}
.live-command.bar-collapsed{padding:8px 12px}
.live-command.bar-collapsed .live-search-row{margin-bottom:0}
.live-command.bar-collapsed #live-filters,.live-command.bar-collapsed .live-search-row input{display:none}
.live-bar-toggle{flex:none;padding:8px 12px;border:2px solid var(--ink);border-radius:7px;background:var(--paper);font-weight:900;font-size:13px;cursor:pointer}
.live-command.collapsed .live-search-row{margin-bottom:0}
.live-search-row input:focus{outline:3px solid var(--c-yellow);outline-offset:1px}
.live-tabs{display:flex;gap:8px;margin-bottom:10px}
.live-tab{flex:1;padding:10px;border:2.5px solid var(--ink);border-radius:8px;background:var(--card);font-weight:800;font-size:15px;cursor:pointer;color:var(--ink)}
.live-tab.active{background:var(--ink);color:#fff}
.live-filter-row{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between}
.live-filter-row .filter-group{display:flex;flex-wrap:wrap;gap:6px}
.live-count{font-weight:800;color:var(--muted);margin:0 0 10px;font-size:14px}
.live-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.live-card{background:var(--card);border:3px solid var(--ink);border-radius:12px;padding:14px;box-shadow:4px 4px 0 var(--ink);display:flex;flex-direction:column;gap:10px}
.live-card-top{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.live-card-title{font-size:17px;line-height:1.4;margin:0}
.live-card-meta{font-size:13px;color:var(--muted);margin:0;font-weight:700}
.live-card-note{font-size:12px;color:var(--muted);margin:0}
.live-card-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.live-item-actions{display:flex;gap:6px;margin-left:auto}
.live-state-btn.active{background:var(--c-yellow)}
.live-state-btn[data-action="hidden"].active{background:var(--ink);color:#fff}
.live-state-badges{display:inline-flex;gap:4px}
.live-skeleton{background:var(--card);border:3px solid var(--ink);border-radius:12px;padding:14px;min-height:180px}
.sk-line{height:14px;border-radius:7px;background:linear-gradient(90deg,#eee 25%,#f7f7f7 50%,#eee 75%);background-size:200% 100%;animation:skshimmer 1.2s infinite;margin-bottom:10px}
.sk-w40{width:40%}.sk-w55{width:55%}.sk-w70{width:70%}.sk-w90{width:90%}
@keyframes skshimmer{to{background-position:-200% 0}}
.live-empty{text-align:center;padding:48px 20px;background:var(--paper);border:3px dashed var(--ink);border-radius:12px}
.live-empty .empty-note{color:var(--muted);margin:8px 0 16px}
@media(max-width:640px){
  .live-command{position:sticky;top:0;z-index:20;border-radius:0 0 12px 12px;margin:0 -4px 14px}
  .live-list{grid-template-columns:1fr}
  .live-item-actions{margin-left:0}
}

/* 동기화 상태 */
.sync-status{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:13px;font-weight:800;color:var(--muted)}
.sync-dot{width:10px;height:10px;border-radius:50%;background:#999;flex:none}
.sync-synced .sync-dot{background:#2E7D32}
.sync-syncing .sync-dot{background:#E8A800;animation:skshimmer 1s infinite}
.sync-offline .sync-dot{background:#C92A2A}
.sync-local .sync-dot{background:#999}
/* ============ v0.12 Field Intel ============ */
.field-grid{display:grid;gap:16px;margin-top:20px}
.field-card{border:2.5px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow);overflow:hidden}
.field-card-thumb{display:block}
.field-card-thumb img{width:100%;height:200px;object-fit:cover;display:block;border-bottom:2.5px solid var(--ink)}
.field-card-body{padding:16px}
.field-card-top{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.field-card-title{font-size:20px;margin:0 0 8px}
.field-card-title a{color:var(--ink);text-decoration:none}
.field-card-title a:hover{text-decoration:underline}
.field-card-meta{font-size:13px;color:var(--muted);font-weight:700;margin-bottom:8px}
.field-card-desc{font-size:14px;color:var(--ink);margin-bottom:12px}
.field-card-foot{display:flex;gap:12px;align-items:center;font-size:13px;font-weight:700;flex-wrap:wrap}
.field-card-link{margin-left:auto;color:var(--blue);text-decoration:none;font-weight:900}
.field-intel-actions{margin:16px 0}
.field-intel-safety{margin:16px 0}
.chip-gray{background:#e8e0cc;color:var(--muted)}
.chip-blue{background:#DCE8FF;color:var(--blue)}
.chip-yellow{background:var(--yellow);color:var(--ink)}
.chip-green{background:#DFF5EA;color:#087445}

.field-detail{max-width:800px}
.field-back{display:inline-block;margin-bottom:16px;color:var(--blue);text-decoration:none;font-weight:800}
.field-detail-top{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.field-detail h2{font-size:32px;margin:0 0 8px}
.field-description{font-size:16px;line-height:1.7;margin:16px 0;white-space:pre-wrap}
.field-detail h3{font-size:20px;margin:24px 0 12px}
.field-evidence-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.field-evidence{border:2px solid var(--ink);border-radius:8px;overflow:hidden;background:var(--card);margin:0}
.field-evidence img{width:100%;height:180px;object-fit:cover;display:block}
.field-evidence figcaption{padding:8px;font-size:12px}
.synth-note{color:var(--muted);font-size:11px;display:block;margin-top:4px}
.field-provenance{border:2.5px solid var(--ink);border-radius:var(--r);background:var(--paper2);padding:16px;margin-top:20px}
.field-provenance h3{font-size:18px;margin:0 0 12px}
.field-provenance dl{display:grid;gap:8px}
.field-provenance dl>div{display:grid;grid-template-columns:120px 1fr;gap:8px}
.field-provenance dt{font-weight:900;font-size:13px}
.field-provenance dd{margin:0;font-size:14px}
.field-note{font-size:13px;color:var(--muted);margin-top:12px}
.field-provenance ul{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.field-provenance li{font-size:14px}
.field-provenance time{font-size:12px;color:var(--muted);font-weight:700}

.field-notice-list{list-style:disc;margin:8px 0 8px 20px;font-size:14px;display:grid;gap:6px}
.field-warning{border:2px solid var(--red);border-radius:8px;padding:12px;background:#FFF5F5}
.warning-text{font-size:14px;font-weight:700;margin-bottom:12px}
.check-label{display:flex;gap:8px;align-items:flex-start;font-weight:800;cursor:pointer}
.check-label input{width:20px;height:20px;flex:none;margin-top:2px}
.error-text{color:var(--red2);font-weight:800}

.review-card{border:2.5px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow);padding:16px;margin-bottom:16px}
.review-card-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.review-card-head b{font-size:18px;flex:1;min-width:200px}
.review-meta{font-size:13px;color:var(--muted);margin-bottom:12px}
.review-meta .warn{color:var(--red2);font-weight:900}
.review-evidence-list{display:grid;gap:8px;margin:12px 0}
.review-evidence{border:1.5px solid #cbbf9f;border-radius:6px;padding:8px;font-size:13px;background:var(--paper)}
.review-evidence .warn{color:var(--red2);font-weight:900}
.review-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px}
.review-action-select,.review-reason,.review-basis{border:2px solid var(--ink);border-radius:6px;padding:8px;font-size:14px}
.review-reason,.review-basis{flex:1;min-width:200px}
.field-review-filters{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}

.my-contributions{margin-top:24px;border-top:2px solid var(--ink);padding-top:16px}
.contrib-stats{font-size:13px;font-weight:800;color:var(--muted);margin-bottom:12px}

@media(max-width:700px){
  .field-card-thumb img{height:160px}
  .field-detail h2{font-size:24px}
  .field-provenance dl>div{grid-template-columns:1fr}
  .review-actions{flex-direction:column;align-items:stretch}
}
/* legal pages (#/privacy, #/terms) */
.legal-page .legal-meta{display:flex;gap:14px;flex-wrap:wrap;margin:12px 0;font-weight:800;font-size:13px;color:var(--muted)}
.legal-page .legal-meta span{border:2px solid var(--ink);border-radius:999px;padding:4px 12px;background:var(--paper3)}
.legal-page .legal-notice{border:2px dashed var(--ink);border-radius:var(--r);background:var(--paper2);padding:12px 16px;font-weight:700;font-size:14px;margin-bottom:20px}
.legal-section{border:2.5px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow);padding:18px;margin-bottom:16px}
.legal-section h3{font-size:19px;margin-bottom:10px}
.legal-section p{font-size:14px;line-height:1.7;color:var(--ink);font-weight:600}
.legal-section p + p{margin-top:8px}
.trust-legal{margin-top:24px;border:2.5px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow);padding:18px}
.trust-legal h3{font-size:19px;margin-bottom:12px}
@media(max-width:700px){.legal-section{padding:14px}.legal-section h3{font-size:17px}}

/* ============ v0.13 Patriotic Local Network ============ */
.shop-command{background:var(--paper);border:3px solid var(--ink);border-radius:12px;padding:14px;box-shadow:4px 4px 0 var(--ink);margin-bottom:14px}
.shop-search-row{margin-bottom:10px}
.shop-search-row input{width:100%;padding:10px 12px;border:2.5px solid var(--ink);border-radius:8px;font-size:15px;background:var(--card);color:var(--ink)}
.shop-filter-row{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;margin-bottom:10px;align-items:center}
.shop-nearby-opts{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px;font-weight:800;font-size:14px}
.shop-privacy-note{font-size:12px;color:var(--muted);font-weight:700;margin:0}
.shop-count{font-weight:800;color:var(--muted);margin:0 0 10px;font-size:14px}
.shop-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.shop-card{background:var(--card);border:3px solid var(--ink);border-radius:12px;padding:14px;box-shadow:4px 4px 0 var(--ink);display:flex;flex-direction:column;gap:8px}
.shop-card-top{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.shop-card-name{font-size:18px;margin:0;line-height:1.3}
.shop-card-name a{color:var(--ink);text-decoration:none}
.shop-card-name a:hover{text-decoration:underline}
.shop-card-addr{font-size:13px;color:var(--muted);margin:0;font-weight:700}
.shop-card-desc{font-size:14px;color:var(--ink);margin:0}
.shop-card-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-top:auto}
.shop-review-meta{font-size:13px;font-weight:800;color:var(--muted)}
.shop-card-actions{display:flex;gap:6px}
.shop-fav-btn.is-favorited{background:var(--yellow)}
.shop-skeleton{background:var(--card);border:3px solid var(--ink);border-radius:12px;padding:14px;min-height:150px}
.shop-empty{text-align:center;padding:48px 20px;background:var(--paper);border:3px dashed var(--ink);border-radius:12px}
.shop-submit-cta{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:20px;padding:16px;border:3px solid var(--ink);border-radius:12px;background:var(--yellow);box-shadow:4px 4px 0 var(--ink);flex-wrap:wrap}
.shop-back{display:inline-block;margin-bottom:16px;color:var(--blue);text-decoration:none;font-weight:800}
.shop-detail-head{margin-bottom:20px}
.shop-detail-top{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.shop-detail-head h2{font-size:32px;margin:0 0 8px}
.shop-detail-addr{font-size:14px;color:var(--muted);font-weight:700;margin:0 0 8px}
.shop-detail-desc{font-size:16px;line-height:1.6;margin:0 0 14px}
.shop-detail-actions{display:flex;gap:8px;flex-wrap:wrap}
.shop-benefits{margin:20px 0}
.shop-benefits h3,.shop-reviews h3,.shop-naver-external h3,.shop-owner-claim h3,.shop-correction h3{font-size:20px;margin:0 0 12px}
.benefit-item{border:2.5px solid var(--ink);border-radius:8px;background:var(--paper3);padding:12px;margin-bottom:10px}
.benefit-item b{font-size:16px}
.benefit-item p{margin:6px 0;font-size:14px}
.benefit-item small{color:var(--muted);font-weight:700}
.review-note,.empty-note{font-size:13px;color:var(--muted);font-weight:700}
.review-avg{font-size:15px}
.review-sort-row{margin:10px 0}
.review-card{border:2.5px solid var(--ink);border-radius:8px;background:var(--card);padding:12px;margin-bottom:10px}
.review-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.review-stars{color:#E8A800;font-weight:900}
.review-body{font-size:14px;line-height:1.6;margin:0 0 8px;white-space:pre-wrap}
.review-foot{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted);font-weight:700;flex-wrap:wrap}
.review-form-wrap{margin-top:20px;border:3px solid var(--ink);border-radius:12px;background:var(--paper3);padding:16px}
.review-form-wrap h4{font-size:18px;margin:0 0 12px}
.shop-naver-external{margin:24px 0;padding:16px;border:2.5px dashed var(--ink);border-radius:12px;background:var(--paper2)}
.shop-owner-claim,.shop-correction{margin:20px 0;padding:16px;border:2px solid var(--ink);border-radius:12px;background:#fff}
.ops-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
/* map modes */
.map-modes{display:flex;gap:8px;margin-bottom:16px}
.map-leaflet{height:420px;border:3px solid var(--ink);border-radius:12px;z-index:1}
.leaflet-popup-content{font-family:'Pretendard',sans-serif;font-weight:700}
.map-nearby-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.shop-marker-dot{width:18px;height:18px;border-radius:50%;background:var(--red);border:2.5px solid var(--ink)}
.shop-marker-cluster{width:36px;height:36px;border-radius:50%;background:var(--blue);color:#fff;border:2.5px solid var(--ink);display:grid;place-items:center;font-weight:900;font-size:14px}
@media(max-width:640px){
  .shop-list{grid-template-columns:1fr}
  .shop-detail-head h2{font-size:24px}
  .map-leaflet{height:320px}
  .shop-submit-cta{flex-direction:column;align-items:stretch}
}

/* v0.14 Politician Intelligence — Civic Bloomberg dossier, not fan page */
.pol-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.pol-card{background:var(--card);border:3px solid var(--ink);border-radius:12px;padding:14px;box-shadow:4px 4px 0 var(--ink);display:flex;flex-direction:column;gap:10px}
.pol-card-main{display:flex;gap:12px;align-items:flex-start}
.pol-photo{position:relative;flex:0 0 64px;width:64px;height:64px;border-radius:50%;background:var(--paper);border:2px solid var(--ink);display:flex;align-items:center;justify-content:center;overflow:hidden}
.pol-photo-lg{flex-basis:96px;width:96px;height:96px}
.pol-initials{font-size:24px;font-weight:800;color:var(--ink)}
.pol-photo-lg .pol-initials{font-size:36px}
.pol-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pol-card-info{min-width:0}
.pol-card-name{font-size:18px;margin:0;line-height:1.3}
.pol-card-name a{color:var(--ink);text-decoration:none}
.pol-card-name a:hover{text-decoration:underline}
.pol-card-meta{font-size:13px;color:var(--muted);margin:2px 0;font-weight:700}
.pol-card-updated{font-size:12px;color:var(--muted);margin:2px 0}
.pol-card-actions{display:flex;gap:8px;margin-top:auto;flex-wrap:wrap}
.pol-select{border:2.5px solid var(--ink);border-radius:8px;padding:8px 10px;font-family:inherit;font-weight:700;font-size:13px;background:var(--card);color:var(--ink)}
.pol-pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin:20px 0}
.pol-page-label{font-size:13px;font-weight:800;color:var(--muted)}
.pol-note{font-size:13px;color:var(--muted);margin:12px 0}
.pol-watch-btn.is-watched{background:var(--ink);color:var(--paper)}
.pol-id{margin-bottom:8px}
.pol-id-head{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}
.pol-id-info{min-width:0;flex:1}
.pol-id-name{font-size:26px;margin:0 0 6px;line-height:1.3}
.pol-links{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.pol-id-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:16px}
.pol-section{margin-top:32px}
.pol-section h3{font-size:18px;margin:0 0 8px}
.pol-counts{display:flex;flex-wrap:wrap;gap:10px}
.pol-count{background:var(--card);border:2px solid var(--ink);border-radius:10px;padding:10px 16px;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;align-items:center;min-width:96px}
.pol-count b{font-size:22px}
.pol-count span{font-size:12px;font-weight:800;color:var(--muted)}
.pol-filter-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:12px 0}
.pol-timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.pol-event{background:var(--card);border:2px solid var(--ink);border-radius:10px;padding:12px}
.pol-event-head{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pol-event-date{font-size:12px;color:var(--muted);font-weight:800;margin-left:auto}
.pol-event-title{font-size:15px;margin:8px 0 4px;line-height:1.4}
.pol-event-summary{font-size:14px;color:var(--ink);margin:6px 0;line-height:1.6}
.pol-event-foot{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px;font-size:13px}
.pol-event-foot a{color:var(--blue);font-weight:800}
.pol-ai-summary{background:var(--paper);border:2px dashed var(--ink);border-radius:8px;padding:8px 10px;margin:8px 0;font-size:13px;line-height:1.6}
.pol-ai-summary p{margin:6px 0 0}
.pol-promise{background:var(--card);border:3px solid var(--ink);border-radius:12px;padding:14px;box-shadow:4px 4px 0 var(--ink);display:flex;flex-direction:column;gap:8px}
.pol-promise-text{font-size:15px;font-weight:700;margin:6px 0 0;line-height:1.5}
.pol-promise-reason{font-size:13px;color:var(--ink);margin:0;line-height:1.6}
.pol-field-card{background:var(--card);border:2px solid var(--ink);border-radius:10px;padding:12px}
.pol-source-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;font-size:14px}
.pol-source-list a{color:var(--blue);font-weight:800}
.pol-more-wrap{display:flex;justify-content:center;margin-top:14px}
@media(max-width:640px){
  .pol-grid{grid-template-columns:1fr}
  .pol-id-name{font-size:22px}
  .pol-count{min-width:0;flex:1}
}

/* dark theme: top nav and utility bar */
[data-theme="night"] .top-nav{background:rgba(20,17,13,.94);border-bottom-color:var(--blue)}
[data-theme="night"] .utility-bar{background:rgba(245,239,224,.05);border-bottom-color:rgba(245,239,224,.12)}

/* ============ v0.15 Civic OSINT Graph + Casefiles ============ */
.civic-graph-wrap{border:2.5px solid var(--ink);border-radius:var(--r);background:var(--paper2);box-shadow:var(--shadow);padding:16px;margin-top:12px}
.civic-graph{width:100%;height:auto;display:block}
.cg-edge line{stroke:var(--ink);stroke-width:2.5}
.cg-edge.is-claim line{stroke-dasharray:6 4;stroke:var(--red)}
.cg-edge-label{font-size:11px;font-weight:800;fill:var(--ink);paint-order:stroke;stroke:var(--paper2);stroke-width:3px}
.cg-node{cursor:pointer}
.cg-node circle{stroke:var(--ink);stroke-width:2.5px}
.cg-node.is-focus circle{stroke-width:4px}
.cg-node:focus{outline:none}
.cg-node:focus circle{stroke:var(--blue);stroke-width:4px}
.cg-node-label{font-size:12px;font-weight:900;fill:var(--ink);pointer-events:none}
.cg-node-type{font-size:10px;font-weight:700;fill:var(--muted);pointer-events:none}
.cg-disclaimer{font-size:12px;color:var(--muted);font-weight:700;margin:12px 0 0;line-height:1.6}
.cg-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:12px;font-weight:800}
.cg-legend-item{display:inline-flex;align-items:center;gap:6px}
.cg-dot{width:12px;height:12px;border-radius:50%;border:2px solid var(--ink);display:inline-block}
.cg-selected{margin-top:10px}
.pol-subhead{font-size:16px;margin:18px 0 8px}
.case-detail h2{font-size:clamp(24px,4vw,36px);margin:0 0 8px}
.case-blocks{display:flex;flex-direction:column;gap:14px;margin-top:16px}
.case-block{border:2.5px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow);padding:16px}
.case-block p{margin:10px 0 0;line-height:1.7}
.case-block .pol-source-list{margin-top:10px}
.ops-form{display:grid;gap:10px;margin:14px 0 22px;max-width:560px}
.ops-form label{display:grid;gap:4px;font-weight:800;font-size:14px}
.ops-form input,.ops-form textarea,.ops-form select{padding:8px 10px;border:2px solid var(--ink);border-radius:7px;background:var(--card);font-size:14px;font-family:inherit}
.ops-list{display:grid;gap:12px;margin-top:12px}
@media(max-width:640px){
  .civic-graph-wrap{padding:10px}
  .cg-edge-label{font-size:10px}
}

/* ============ v0.16 Community Pulse ============ */
.pulse-chart{width:100%;max-width:680px;height:auto;display:block;border:2.5px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow);padding:12px;margin:0 0 18px}
.pulse-legend{display:flex;gap:16px;flex-wrap:wrap;margin:-8px 0 22px;font-size:13px;font-weight:800}
.pulse-legend span{display:inline-flex;align-items:center;gap:6px}
.pulse-legend i{width:14px;height:14px;border-radius:4px;border:2px solid var(--ink);display:inline-block}

/* Kakao channel button */
.kakao-channel-btn{display:inline-flex;align-items:center;gap:6px;background:#FEE500;color:#371D1E!important;border:2px solid #371D1E;border-radius:8px;padding:6px 12px;font-weight:900;text-decoration:none;transition:transform .14s var(--ease)}
.kakao-channel-btn:hover{transform:translate(-1px,-1px)}
[data-theme="night"] .kakao-channel-btn{background:#E6CF00;color:#1A1A1A!important;border-color:#F5EFE0}

/* Brightness control */
.brightness-wrap{position:relative;display:inline-flex}
.brightness-panel{position:absolute;top:calc(100% + 8px);right:0;z-index:200;display:flex;align-items:center;gap:10px;background:var(--paper3);border:2.5px solid var(--ink);border-radius:10px;box-shadow:var(--shadow);padding:10px 14px;white-space:nowrap}
.brightness-panel[hidden]{display:none}
.brightness-panel input[type="range"]{width:140px;accent-color:var(--yellow);cursor:pointer}
.brightness-panel span{font-size:12px;font-weight:900;min-width:44px;text-align:right}

/* Criminal records (v0.17) */
.pol-criminal-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.pol-criminal-item{display:flex;gap:12px;align-items:flex-start;border:2px solid var(--ink);border-radius:8px;background:var(--paper2);padding:12px}
.pol-criminal-badge{flex:none;font-family:'Archivo';font-weight:900;font-size:13px;background:var(--red2);color:#fff;padding:6px 10px;border-radius:6px;white-space:nowrap}
.pol-criminal-detail{display:grid;gap:4px;font-size:14px}
.pol-criminal-detail b{font-size:15px}
.pol-criminal-sentence{color:var(--muted);font-weight:700;font-size:13px}
.pol-criminal-date{color:var(--muted);font-size:12px;font-weight:700}
.pol-criminal-source{font-size:12px;font-weight:900;color:var(--blue)}

/* Assets (v0.17) */
.pol-assets-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.pol-assets-item{display:flex;gap:12px;align-items:center;border:2px solid var(--ink);border-radius:8px;background:var(--paper2);padding:12px}
.pol-assets-year{flex:none;font-family:'Archivo';font-weight:900;font-size:14px;background:var(--navy);color:#fff;padding:6px 10px;border-radius:6px}
.pol-assets-detail{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:14px}
.pol-assets-detail b{font-size:18px}
.pol-assets-change{font-size:13px;font-weight:900}
.pol-assets-change.up{color:var(--red2)}
.pol-assets-change.down{color:var(--blue)}
.pol-assets-source{font-size:12px;font-weight:900;color:var(--blue)}
.pol-newstapa-link{margin-top:12px;font-size:13px;font-weight:900}
.pol-newstapa-link a{color:var(--blue)}

    /* Mobile burger menu + drawer */
    .burger-btn{display:none;flex-direction:column;justify-content:center;gap:5px;width:40px;height:40px;background:none;border:none;cursor:pointer;padding:8px}
    .burger-btn span{display:block;height:2.5px;background:var(--ink);border-radius:2px;transition:.2s}
    .burger-btn[aria-expanded="true"] span:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
    .burger-btn[aria-expanded="true"] span:nth-child(2){opacity:0}
    .burger-btn[aria-expanded="true"] span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}
    .drawer-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:200}
    .mobile-drawer{position:fixed;top:0;left:0;bottom:0;width:280px;max-width:85vw;background:var(--paper);z-index:201;box-shadow:4px 0 20px rgba(0,0,0,.2);transform:translateX(-100%);transition:transform .25s ease;display:flex;flex-direction:column}
    .mobile-drawer.open{transform:translateX(0)}
    .drawer-head{display:flex;align-items:center;justify-content:space-between;padding:18px;border-bottom:2px solid var(--ink)}
    .drawer-head b{font-family:'Black Han Sans';font-size:20px}
    .drawer-close{background:none;border:none;font-size:20px;cursor:pointer;padding:8px;color:var(--ink)}
    .drawer-nav{display:flex;flex-direction:column;padding:12px;gap:4px;overflow-y:auto}
    .drawer-nav a{display:flex;align-items:center;gap:12px;padding:13px 14px;border-radius:8px;text-decoration:none;font-weight:800;font-size:15px;color:var(--ink)}
    .drawer-nav a:hover{background:var(--paper2)}
    .drawer-nav a.active{background:var(--ink);color:var(--paper)}
    @media(max-width:1023px){.burger-btn{display:flex}}
    body.drawer-open{overflow:hidden}

    /* News feed */
    .news-grid{display:grid;gap:20px}
    .news-group h4{font-size:16px;font-weight:900;margin-bottom:12px}
    .news-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
    .news-card{display:block;border:2.5px solid var(--ink);border-radius:8px;background:var(--paper3);padding:16px;text-decoration:none;box-shadow:3px 3px 0 var(--ink);transition:transform .15s}
    .news-card:hover{transform:translate(-2px,-2px)}
    .news-card.news-overseas{border-color:var(--blue)}
    .news-card.news-domestic{border-color:var(--muted)}
    .news-source{display:inline-block;font-size:11px;font-weight:900;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
    .news-card h3{font-size:16px;line-height:1.4;margin-bottom:8px}
    .news-card p{font-size:13px;color:var(--muted);line-height:1.5;margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
    .news-card time{font-size:12px;color:var(--muted);font-weight:700}
    .news-loading,.news-empty{text-align:center;padding:40px;color:var(--muted);font-weight:700}

    /* Compact hero (masthead) */
    .hero-compact{padding:36px 0 28px;text-align:center}
    .hero-compact h1{font-size:clamp(36px,6vw,64px);line-height:1;margin-bottom:12px;letter-spacing:-.02em}
    .hero-compact .hero-tagline{font-size:clamp(14px,2vw,18px);font-weight:700;color:var(--muted);margin-bottom:20px}
    .hero-compact .hero-cta{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}
    .hero-compact .kicker{margin-bottom:16px}

    /* Hero banner slider */
    .hero-slider{position:relative;overflow:hidden;padding:0;min-height:min(58vh,480px);display:block}
    .hero-slides{position:relative;min-height:inherit}
    .hero-slide{position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity .6s var(--ease),visibility .6s;min-height:inherit;display:flex;align-items:center}
    .hero-slide.active{opacity:1;visibility:visible;position:relative}
    .hero-slide-bg{position:absolute;inset:0;z-index:0}
    .hero-slide-bg img{width:100%;height:100%;object-fit:cover;display:block}
    .hero-slide-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(100deg,rgba(13,20,38,.82) 0%,rgba(13,20,38,.55) 42%,rgba(13,20,38,.15) 75%,rgba(13,20,38,.05) 100%)}
    .hero-slide-content{position:relative;z-index:2;padding-top:64px;padding-bottom:64px;color:#fff}
    .hero-slide-content .kicker{background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.25)}
    .hero-slide-content .live-pip{background:var(--green)}
    .hero-slide-content h1{font-size:clamp(40px,7vw,84px);line-height:.95;margin-bottom:14px;color:#fff;letter-spacing:-.02em}
    .hero-slide-content .hero-tagline{font-size:clamp(15px,2.2vw,20px);font-weight:700;color:rgba(255,255,255,.85);margin-bottom:24px;max-width:560px}
    .hero-slide-content .hero-cta{display:flex;gap:12px;flex-wrap:wrap}
    .hero-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:44px;height:44px;border-radius:50%;border:2px solid rgba(255,255,255,.5);background:rgba(13,20,38,.45);color:#fff;font-size:24px;line-height:1;cursor:pointer;display:grid;place-items:center;transition:background .15s}
    .hero-arrow:hover{background:rgba(13,20,38,.75)}
    .hero-prev{left:16px}.hero-next{right:16px}
    .hero-dots{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);z-index:3;display:flex;gap:8px}
    .hero-dot{width:10px;height:10px;border-radius:50%;border:0;background:rgba(255,255,255,.4);cursor:pointer;padding:0;transition:background .15s,transform .15s}
    .hero-dot.active{background:#fff;transform:scale(1.25)}
    @media(max-width:760px){
      .hero-slider{min-height:420px}
      .hero-slide-content{padding-top:48px;padding-bottom:56px}
      .hero-slide-content h1{font-size:clamp(34px,9vw,48px)}
      .hero-arrow{width:36px;height:36px;font-size:20px}
      .hero-prev{left:8px}.hero-next{right:8px}
    }
    @media(max-width:760px){
      .hero-compact{padding:28px 0 24px}
      .hero-compact h1{font-size:clamp(32px,8vw,44px)}
    }

    /* FK Progression v0.1 */
    .progression-card{border:3px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow-lg);padding:20px;margin-bottom:18px}
    .prog-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;flex-wrap:wrap;gap:8px}
    .prog-tier{font-family:'Archivo';font-weight:900;font-size:22px;letter-spacing:.02em}
    .prog-fkid{font-family:'Archivo';font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.08em}
    .prog-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px}
    .prog-stat{text-align:center;border:2px solid var(--ink);border-radius:7px;background:var(--paper);padding:12px 8px}
    .prog-stat .num{font-family:'Archivo';font-size:26px;font-weight:900;line-height:1}
    .prog-stat small{font-size:10px;font-weight:900;color:var(--muted);letter-spacing:.06em}
    .prog-rails{display:grid;gap:10px}
    .prog-rail{display:grid;grid-template-columns:80px 1fr 24px;gap:10px;align-items:center}
    .rail-label{font-family:'Archivo';font-size:11px;font-weight:900;letter-spacing:.08em}
    .rail-bar{height:10px;border:2px solid var(--ink);border-radius:99px;background:var(--paper);overflow:hidden}
    .rail-fill{height:100%;background:var(--ink);transition:width .3s var(--ease)}
    .rail-val{font-family:'Archivo';font-size:13px;font-weight:900;text-align:right}
    @media(max-width:760px){
      .prog-tier{font-size:18px}
      .prog-stats{gap:8px}
      .prog-stat .num{font-size:20px}
    }

    /* FK Badge categories */
    .fk-badge{display:inline-block;border:2px solid var(--ink);border-radius:7px;padding:6px 10px;font-size:12px;font-weight:900;margin:0 6px 6px 0;background:var(--paper3)}
    .badge-activity{background:#FFF3D6}
    .badge-intel{background:#DCE8FF}
    .badge-local{background:#DFF5EA}
    .badge-creator{background:#F3E8FF}
    .badge-special{background:var(--ink);color:var(--paper)}
    .badge-legacy{border-color:var(--red);box-shadow:2px 2px 0 var(--red)}
    .badge-command{border-width:3px}

    /* FK CONTROL ROOM v0.1 */
    .ops-shell{min-height:100vh;background:var(--paper2)}
    .ops-header{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;border-bottom:3px solid var(--ink);background:var(--paper3)}
    .ops-brand{display:flex;gap:14px;align-items:center}
    .ops-logo{width:44px;height:44px;display:grid;place-items:center;background:var(--ink);color:var(--paper);font-family:'Archivo';font-weight:900;font-size:18px;border-radius:8px}
    .ops-brand h1{font-family:'Archivo';font-size:20px;font-weight:900;letter-spacing:.04em;margin:0}
    .ops-brand p{font-size:12px;color:var(--muted);margin:0;font-weight:700}
    .ops-system-status{display:flex;align-items:center;gap:8px;font-family:'Archivo';font-size:13px;font-weight:900}
    .status-dot{width:10px;height:10px;border-radius:50%;display:inline-block}
    .status-ok{background:#16B26B}
    .status-warn{background:#FFC72E}
    .status-err{background:#E63946}
    .ops-body{display:grid;grid-template-columns:240px 1fr;min-height:calc(100vh - 77px)}
    .ops-sidebar{border-right:2px solid var(--ink);background:var(--paper3);padding:16px 12px;overflow-y:auto}
    .ops-nav-section{margin-bottom:20px}
    .ops-nav-label{font-family:'Archivo';font-size:10px;font-weight:900;letter-spacing:.12em;color:var(--muted);padding:0 8px;margin-bottom:8px}
    .ops-nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;text-decoration:none;color:var(--ink);font-weight:800;font-size:14px;margin-bottom:2px}
    .ops-nav-item:hover{background:var(--paper2)}
    .ops-nav-item.active{background:var(--ink);color:var(--paper)}
    .ops-nav-icon{width:20px;height:20px;display:grid;place-items:center;font-size:14px}
    .ops-badge{font-size:9px;font-weight:900;padding:2px 6px;border-radius:99px;letter-spacing:.06em}
    .ops-badge-beta{background:#DCE8FF;color:#1D4ED8}
    .ops-badge-experimental{background:#F3E8FF;color:#7C3AED}
    .ops-main{padding:24px;overflow-y:auto}
    .ops-dashboard{max-width:1200px}
    .ops-greeting{margin-bottom:24px}
    .ops-greeting h2{font-size:28px;margin:0 0 4px}
    .ops-greeting p{color:var(--muted);font-weight:700;margin:0}
    .ops-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
    .ops-card{border:3px solid var(--ink);border-radius:var(--r);background:var(--paper3);box-shadow:var(--shadow);padding:20px}
    .ops-card h3{font-family:'Archivo';font-size:13px;font-weight:900;letter-spacing:.1em;margin:0 0 16px;color:var(--muted)}
    .ops-queue-list,.ops-health-list{display:grid;gap:10px;margin-bottom:16px}
    .ops-queue-item,.ops-health-item{display:flex;justify-content:space-between;align-items:center;font-weight:800;font-size:14px}
    .ops-queue-item strong{font-family:'Archivo';font-size:20px}
    .ops-activity-list{display:grid;gap:8px;font-size:13px}
    .ops-empty{color:var(--muted);font-weight:700}
    @media(max-width:900px){
      .ops-body{grid-template-columns:1fr}
      .ops-sidebar{display:none}
      .ops-grid{grid-template-columns:1fr}
    }

/* NEWS v0.4 — Intelligence Feed UI */
.news-cat{margin-bottom:20px;border:2px solid var(--ink);border-radius:var(--r);background:var(--paper3);overflow:hidden}
.news-cat-head{display:flex;align-items:center;gap:10px;padding:14px 16px 10px}
.news-cat-label{font-family:'Archivo';font-size:16px;font-weight:900}
.news-cat-en{font-size:10px;font-weight:900;letter-spacing:.1em;color:var(--muted)}
.news-cat-count{margin-left:auto;background:var(--ink);color:var(--paper);font-size:11px;font-weight:900;padding:2px 10px;border-radius:99px}
/* Horizontal rail: category vertical, articles horizontal */
.news-rail{position:relative}
.news-cards{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x proximity;padding:4px 16px 16px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.news-cards::-webkit-scrollbar{display:none}
.news-cards:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}
/* Edge fade affordance — only where more content exists */
.news-rail::before,.news-rail::after{content:"";position:absolute;top:0;bottom:0;width:28px;pointer-events:none;z-index:2;opacity:0;transition:opacity .2s}
.news-rail::before{left:0;background:linear-gradient(to right,var(--paper3),transparent)}
.news-rail::after{right:0;background:linear-gradient(to left,var(--paper3),transparent)}
.news-rail:not(.at-start)::before{opacity:1}
.news-rail:not(.at-end)::after{opacity:1}
/* Rail card sizing: peek next card on mobile */
.news-rail .news-card-wrap{flex:0 0 clamp(280px,82vw,340px);scroll-snap-align:start;display:flex;flex-direction:column}
.news-rail .news-card-wrap .news-card{flex:1;display:flex;flex-direction:column}
.news-rail .news-xlink{margin-top:auto}
@media(min-width:768px){.news-rail .news-card-wrap{flex-basis:340px}}
@media(min-width:1024px){.news-rail .news-card-wrap{flex-basis:320px}}
/* Arrow buttons: fine-pointer devices only */
.rail-btn{position:absolute;top:44%;z-index:3;width:36px;height:36px;border-radius:50%;border:2px solid var(--ink);background:var(--paper);color:var(--ink);font-size:20px;font-weight:900;line-height:1;cursor:pointer;display:none;align-items:center;justify-content:center;box-shadow:2px 2px 0 var(--ink)}
.rail-prev{left:8px}
.rail-next{right:8px}
.rail-btn:hover{background:var(--yellow)}
.rail-btn:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
@media(hover:hover) and (pointer:fine){.rail-btn{display:flex}}
.news-rail.at-start .rail-prev{display:none}
.news-rail.at-end .rail-next{display:none}
.news-card{display:block;text-decoration:none;color:var(--ink);border:2px solid var(--ink);border-radius:8px;padding:14px;background:var(--paper);transition:transform .15s}
.news-card:hover{transform:translateY(-2px)}
.news-card-top{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.news-source{font-size:11px;font-weight:900;letter-spacing:.06em}
.news-viewpoint{font-size:9px;font-weight:900;letter-spacing:.08em;padding:2px 8px;border-radius:99px}
.news-vp-wire{background:#E8F5E9;color:#1B5E20}
.news-vp-us-conservative{background:#FFF3E0;color:#E65100}
.news-vp-industry{background:#E3F2FD;color:#0D47A1}
.news-vp-local{background:#F3E5F5;color:#4A148C}
.news-card h3{font-size:15px;font-weight:800;margin:0 0 8px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.news-card p{font-size:13px;color:var(--muted);margin:0 0 8px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.news-card-meta{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--muted);font-weight:700}
.news-dup{background:var(--paper2);padding:2px 8px;border-radius:99px;font-size:10px}
.news-foot{margin-top:16px;text-align:center}

/* OPS NEWS — source management */
.ops-page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.ops-page-head h2{margin:0;font-size:22px}
.ops-table-wrap{overflow-x:auto}
.ops-table{width:100%;border-collapse:collapse;font-size:13px}
.ops-table th{text-align:left;padding:10px 12px;border-bottom:2px solid var(--ink);font-family:'Archivo';font-size:11px;font-weight:900;letter-spacing:.06em;white-space:nowrap}
.ops-table td{padding:10px 12px;border-bottom:1px solid var(--paper2);vertical-align:middle}
.ops-table tr:hover td{background:var(--paper2)}
.ops-err{color:#C62828;font-size:12px;max-width:200px;overflow:hidden;text-overflow:ellipsis}
.ops-meta{font-size:12px;color:var(--muted);margin-top:12px}
.ops-audit-list{display:grid;gap:8px}
.ops-audit-item{display:flex;gap:12px;align-items:center;font-size:13px;padding:8px 12px;background:var(--paper2);border-radius:8px;flex-wrap:wrap}
.ops-audit-time{color:var(--muted);font-weight:700;min-width:70px}
.ops-audit-action{font-family:'Archivo';font-weight:900;font-size:11px;letter-spacing:.04em}
.ops-audit-target{font-weight:800}
.ops-audit-reason{color:var(--muted);font-size:12px}
.btn-xs{padding:4px 10px;font-size:11px}

/* MARKETS — TradingView widgets */
.market-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.market-mini{border:2px solid var(--ink);border-radius:8px;background:var(--paper3);overflow:hidden}
.market-mini-label{font-family:'Archivo';font-size:11px;font-weight:900;letter-spacing:.08em;padding:8px 12px 0}
.market-mini-widget{min-height:100px}
.market-section{margin-bottom:16px;border:2px solid var(--ink);border-radius:var(--r);background:var(--paper3);overflow:hidden}
.tradingview-widget-container{width:100%}
@media(max-width:700px){
  .market-strip{grid-template-columns:repeat(2,1fr)}
}


/* ===== PWA onboarding ===== */
.fk-pwa-overlay{position:fixed;inset:0;z-index:220;display:grid;place-items:end center;padding:20px;background:rgba(13,33,73,.46);backdrop-filter:blur(8px)}
.fk-pwa-dialog{width:min(620px,100%);display:grid;grid-template-columns:auto 1fr;gap:16px;border:3px solid var(--ink);border-radius:16px;background:var(--paper3);box-shadow:10px 10px 0 var(--ink);padding:20px;animation:fkPwaIn .2s var(--ease)}
.fk-pwa-mark{width:58px;height:58px;display:grid;place-items:center;border:3px solid var(--ink);border-radius:14px;background:var(--red);color:var(--paper);font-family:'Archivo';font-weight:900;letter-spacing:.04em;box-shadow:4px 4px 0 var(--ink)}
.fk-pwa-copy{min-width:0}.fk-pwa-eyebrow{display:block;font-family:'Archivo';font-size:11px;font-weight:900;letter-spacing:.16em;color:var(--blue);margin-bottom:5px}.fk-pwa-dialog h2{font-size:clamp(26px,5vw,38px);line-height:1;margin:0 0 10px}.fk-pwa-dialog p{margin:0;color:var(--muted);font-size:14px;font-weight:700;line-height:1.55}
.fk-pwa-actions{grid-column:1/-1;display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.fk-pwa-actions .btn{min-width:132px}
@keyframes fkPwaIn{from{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1;transform:none}}
@media(min-width:760px){.fk-pwa-overlay{place-items:center}.fk-pwa-dialog{padding:24px}}
@media(max-width:520px){.fk-pwa-overlay{padding:12px}.fk-pwa-dialog{grid-template-columns:1fr;box-shadow:6px 6px 0 var(--ink);padding:18px}.fk-pwa-mark{width:48px;height:48px;border-radius:12px}.fk-pwa-actions{display:grid;grid-template-columns:1fr 1fr}.fk-pwa-actions .btn{min-width:0;width:100%}}
@media(prefers-reduced-motion:reduce){.fk-pwa-dialog{animation:none}}

/* Daily Quest v2 — server-assigned quest card */
.daily-quest-card[data-v2="1"]{display:flex;align-items:center;gap:12px}
.daily-quest-actions{display:flex;gap:8px;margin-left:auto;flex-shrink:0}
.quest-done{font-family:'Archivo';font-weight:900;font-size:13px;color:var(--green, #10B26B)}

/* Feedback Board */
.fb-filters{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;margin:16px 0}
.fb-cats,.fb-sort{display:flex;gap:8px;flex-wrap:wrap}
.fb-list{display:flex;flex-direction:column;gap:12px;margin:16px 0}
.fb-post{background:var(--card,#fff);border:2px solid var(--ink,#1a1a1a);border-radius:12px;padding:16px;box-shadow:3px 3px 0 var(--ink,#1a1a1a)}
.fb-post-head{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.fb-status{font-size:12px;font-weight:700;padding:2px 8px;border-radius:20px;background:#eee}
.fb-status.st-open{background:#E3F2FD}
.fb-status.st-review{background:#FFF3E0}
.fb-status.st-planned{background:#E8E5FF}
.fb-status.st-done{background:#E8F5E9}
.fb-status.st-rejected{background:#F5F5F5;color:#999}
.fb-title{font-size:17px;font-weight:800;margin:0 0 8px}
.fb-body{font-size:14px;line-height:1.6;white-space:pre-wrap;margin:0 0 12px;color:#444}
.fb-reply{background:#F9F9F9;border-left:3px solid var(--red,#C92A2A);padding:8px 12px;margin:0 0 12px;border-radius:0 8px 8px 0}
.fb-reply strong{font-size:13px}
.fb-reply p{font-size:14px;margin:4px 0 0;white-space:pre-wrap}
.fb-post-foot{display:flex;justify-content:space-between;align-items:center}
.fb-vote{background:#F5F5F5;border:2px solid var(--ink,#1a1a1a);border-radius:8px;padding:4px 12px;font-weight:700;cursor:pointer}
.fb-vote.voted{background:#FFF3E0;border-color:#E8A800}
.fb-date{font-size:12px;color:#999}
.fb-form-wrap{margin-top:32px}
.fb-form-wrap h3{font-size:18px;margin-bottom:12px}

/* News Publisher Navigator */
.news-publishers{display:flex;gap:8px;overflow-x:auto;padding:8px 0;margin:8px 0;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.news-publishers .chip{white-space:nowrap;flex-shrink:0}
.pub-count{font-size:11px;opacity:.7;margin-left:2px}

/* Intelligence Command Center */
.intel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin:20px 0}
.intel-card{background:var(--card,#fff);border:2px solid var(--ink,#1a1a1a);border-radius:12px;padding:20px;box-shadow:3px 3px 0 var(--ink,#1a1a1a);text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:8px}
.intel-card-head{display:flex;align-items:center;gap:10px}
.intel-icon{font-size:24px}
.intel-card-head h3{margin:0;font-size:18px}
.intel-card-desc{font-size:13px;color:#666;margin:0}
.intel-preview-list{list-style:none;margin:8px 0 0;padding:0;font-size:13px;display:flex;flex-direction:column;gap:6px}
.intel-preview-list a{color:inherit;text-decoration:none}
.intel-preview-list a:hover{text-decoration:underline}
.intel-sym{font-weight:700}
.intel-pct.up{color:#0a7d2c}
.intel-pct.down{color:#c92a2a}
.intel-card-go{margin-top:auto;font-size:13px;font-weight:700;color:var(--red,#C92A2A)}
.intel-loading{grid-column:1/-1;text-align:center;padding:40px;color:#999}

/* Shared Intelligence UI tokens (UI-01 Foundation) — FK editorial module cards */
.fk-intel-card{display:grid;grid-template-columns:112px 1fr;min-height:118px;border:3px solid var(--ink);border-radius:9px;background:var(--paper3);box-shadow:5px 5px 0 var(--ink);overflow:hidden;text-decoration:none;color:inherit}
.fk-intel-media{border-right:3px solid var(--ink);background:var(--paper2);display:grid;place-items:center;min-height:118px}
.fk-intel-no{font-family:'Archivo',sans-serif;font-weight:900;font-size:28px;color:var(--paper)}
.tone-red .fk-intel-media{background:var(--red)}
.tone-blue .fk-intel-media{background:var(--blue)}
.tone-yellow .fk-intel-media{background:var(--yellow)}
.tone-yellow .fk-intel-no{color:var(--ink)}
.tone-green .fk-intel-media{background:var(--green)}
.tone-ink .fk-intel-media{background:var(--ink)}
.fk-intel-body{padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.fk-intel-body h3{margin:0;font-size:17px}
.fk-intel-en{font-family:'Archivo',sans-serif;font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}
.fk-evidence-row{display:flex;gap:6px;flex-wrap:wrap}
.fk-evidence-chip{border:1.5px solid var(--ink);border-radius:4px;padding:3px 7px;background:var(--paper);font-family:'Archivo',sans-serif;font-size:9px;font-weight:900;letter-spacing:.04em}
.fk-intel-body p{margin:0;font-size:13px;color:var(--muted)}
@media(max-width:760px){
  .fk-intel-card{grid-template-columns:72px 1fr;min-height:96px}
  .fk-intel-media{min-height:96px}
  .fk-intel-no{font-size:20px}
}

/* UI-02: Intelligence Command Center editorial grid */
.intel-editorial{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:20px 0}
.fk-freshness{font-family:'Archivo',sans-serif;font-size:9px;font-weight:900;letter-spacing:.06em;padding:2px 6px;border-radius:3px;vertical-align:middle}
.fk-freshness.live{background:var(--green);color:#fff}
.fk-freshness.stale{background:var(--yellow);color:var(--ink)}
@media(max-width:1023px){
  .intel-editorial{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:767px){
  .intel-editorial{grid-template-columns:1fr;gap:12px}
}

/* UI-03: Graph Explorer workspace */
.workspace-shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:480px;border:3px solid var(--ink);border-radius:9px;overflow:hidden;background:var(--paper)}
.workspace-shell.has-inspector{grid-template-columns:220px minmax(0,1fr) minmax(300px,360px)}
.workspace-sidebar{background:var(--paper2);border-right:3px solid var(--ink);padding:16px;display:flex;flex-direction:column;gap:18px}
.workspace-inspector{background:var(--paper2);border-left:3px solid var(--ink);padding:16px;overflow-y:auto}
.workspace-main{min-width:0;background:var(--paper);display:flex;flex-direction:column}
.workspace-toolbar{padding:10px 16px;border-bottom:2px solid var(--ink);background:var(--paper3)}
.ws-status{font-family:'Archivo',sans-serif;font-size:12px;font-weight:700}
.ws-filter-group h3{font-size:13px;margin:0 0 8px}
.ws-input{width:100%;padding:8px 10px;border:2px solid var(--ink);border-radius:6px;background:var(--paper);font-size:14px}
.ws-check{display:flex;align-items:center;gap:8px;font-size:14px;padding:4px 0;cursor:pointer}
.ws-search-results{display:flex;flex-direction:column;gap:4px;margin-top:8px;max-height:200px;overflow-y:auto}
.ws-result-item{text-align:left;padding:8px 10px;border:2px solid var(--ink);border-radius:6px;background:var(--paper);cursor:pointer}
.ws-result-item:hover{background:var(--yellow)}
.ws-result-item b{display:block;font-size:14px}
.ws-result-item small{color:var(--muted);font-size:12px}
.graph-canvas{flex:1;padding:16px;min-height:400px;display:grid;place-items:center}
.insp-edge{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--paper2);font-size:13px}
.insp-source{font-size:12px;color:var(--blue)}
.insp-no-source{font-size:12px;color:var(--red)}
.fk-evidence-chip.is-claim{background:var(--yellow)}
.graph-bottom-sheet{position:fixed;bottom:0;left:0;right:0;z-index:50;background:var(--paper3);border-top:3px solid var(--ink);border-radius:12px 12px 0 0;padding:12px 16px 24px;max-height:70vh;overflow-y:auto;box-shadow:0 -4px 16px rgba(0,0,0,.2)}
.sheet-handle{width:40px;height:4px;background:var(--ink);border-radius:2px;margin:0 auto 12px;opacity:.3}
.sheet-close{margin-top:12px}
@media(max-width:1023px){
  .workspace-shell,.workspace-shell.has-inspector{display:block;border:2px solid var(--ink)}
  .workspace-sidebar{display:none}
  .workspace-inspector{display:none}
  .graph-canvas{min-height:320px}
}

/* UI-04: Markets Intelligence */
.market-asset-list{display:flex;flex-direction:column;gap:6px}
.market-asset-item{display:flex;flex-direction:column;gap:2px;align-items:flex-start}
.market-asset-item.active{background:var(--yellow)}
.market-detail{padding:20px}
.market-detail-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.market-detail-head h3{margin:0;font-size:22px}
.market-price-big{font-family:'Archivo',sans-serif;font-size:clamp(32px,4vw,44px);font-weight:900;letter-spacing:-.02em}
.market-change{font-family:'Archivo',sans-serif;font-size:16px;font-weight:700;margin:6px 0 16px}
.market-change.up{color:#0a7d2c}
.market-change.down{color:var(--red)}
.market-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}
.market-metrics .metric{border:2px solid var(--ink);border-radius:6px;padding:10px;background:var(--paper3)}
.market-metrics .metric span{display:block;font-size:11px;color:var(--muted);font-weight:700}
.market-metrics .metric b{font-family:'Archivo',sans-serif;font-size:15px}
.market-disclaimer{font-size:12px;color:var(--muted)}
.market-tv-detail{padding:0 20px 20px;min-height:300px}
.market-mobile-strip{display:none;gap:8px;overflow-x:auto;padding:12px 0;-webkit-overflow-scrolling:touch}
.market-strip-item{flex-shrink:0;border:2px solid var(--ink);border-radius:8px;background:var(--paper3);padding:10px 14px;cursor:pointer;display:flex;flex-direction:column;gap:2px;box-shadow:3px 3px 0 var(--ink)}
.market-strip-item.active{background:var(--yellow)}
.market-strip-item b{font-family:'Archivo',sans-serif;font-size:14px}
.market-strip-item span{font-size:13px;font-weight:700}
@media(max-width:1023px){
  .market-mobile-strip{display:flex}
  .market-metrics{grid-template-columns:1fr}
}

/* UI-05: Politician detail workspace */
.pol-workspace{display:grid}
.pol-mobile-flow{display:none}
.pol-identity-rail .pol-id{border:0;box-shadow:none;background:transparent;padding:0}
.pol-context-rail h3{font-size:15px;margin:0 0 10px}
.pol-related-intel{margin-top:18px;padding-top:14px;border-top:2px solid var(--ink)}
.pol-related-intel .fk-evidence-row{margin-top:8px}
@media(max-width:1023px){
  .pol-workspace{display:none}
  .pol-mobile-flow{display:block}
}
@media(min-width:1024px){
  .pol-workspace{grid-template-columns:280px minmax(0,1fr) minmax(300px,340px)}
}

/* UI-06: Meme Forge */
.meme-workspace .workspace-main{padding:16px}
.meme-steps{display:flex;gap:6px;margin-bottom:16px;overflow-x:auto}
.meme-steps .chip{white-space:nowrap;cursor:pointer}
.meme-steps .chip.active{background:var(--yellow)}
.meme-canvas-wrap{display:grid;place-items:center;padding:20px;background:var(--paper2);border:2px solid var(--ink);border-radius:8px}
.meme-canvas{width:min(100%,400px);aspect-ratio:1;background:var(--paper3);border:3px solid var(--ink);border-radius:8px;box-shadow:5px 5px 0 var(--ink);display:flex;flex-direction:column;justify-content:space-between;padding:20px;position:relative}
.meme-canvas.tpl-fact-check{background:var(--yellow)}
.meme-canvas.tpl-timeline{background:#DCE8FF}
.meme-canvas.tpl-vs-card{background:var(--ink);color:var(--paper)}
.meme-canvas.tpl-vs-card .meme-top-text,.meme-canvas.tpl-vs-card .meme-bottom-text{color:var(--paper)}
.meme-top-text,.meme-bottom-text{font-family:'Black Han Sans',sans-serif;font-size:28px;text-align:center;min-height:60px;outline:none;cursor:text}
.meme-top-text:empty:before,.meme-bottom-text:empty:before{content:attr(data-ph);opacity:.4}
.meme-customize{display:flex;flex-direction:column;gap:12px;margin-top:16px}
.meme-customize label{display:flex;flex-direction:column;gap:6px;font-weight:700;font-size:14px}
.meme-template-list{display:flex;flex-direction:column;gap:6px}
.meme-tpl.active{background:var(--yellow)}
.meme-source-banner{display:flex;align-items:center;gap:10px;padding:10px 14px;border:2px solid var(--ink);border-radius:8px;background:var(--paper3);margin-bottom:16px}
.meme-source-detail p{margin:6px 0;font-size:14px}
.meme-share-btns{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
@media(max-width:1023px){
  .meme-workspace{display:block}
  .meme-workspace .workspace-sidebar,.meme-workspace .workspace-inspector{display:block;border:0;padding:12px 0}
  .meme-steps{position:sticky;top:0;background:var(--paper);z-index:5;padding:8px 0}
}
/* UI-08: Desktop app shell (reuses workspace-shell primitives from UI-03) */
.app-shell{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:100dvh;background:var(--paper)}
.app-shell.has-inspector{grid-template-columns:224px minmax(0,1fr) minmax(300px,360px)}
@media(min-width:1024px) and (max-width:1279px){
  .app-shell{grid-template-columns:76px minmax(0,1fr)}
  .app-shell.has-inspector{grid-template-columns:76px minmax(0,1fr) minmax(300px,360px)}
  .app-rail{padding:12px 8px;align-items:center}
  .app-rail-word,.app-rail-label{display:none}
  .app-rail-no{display:inline-flex}
  .app-rail-link{justify-content:center;padding:10px}
  .app-rail-cta-label{display:none}
  .app-rail-cta-icon{display:inline}
}
.app-body{min-width:0;min-height:100dvh;overflow-x:hidden}
.app-rail{position:sticky;top:0;height:100dvh;overflow-y:auto;z-index:60;background:var(--paper2);border-right:3px solid var(--ink);padding:16px;display:flex;flex-direction:column;gap:18px}
.app-rail-logo{display:flex;align-items:center;gap:10px;text-decoration:none;padding-bottom:12px;border-bottom:2px solid var(--ink)}
.app-rail-logo img{width:30px;height:30px;flex:none}
.app-rail-word{display:flex;flex-direction:column;line-height:1.1}
.app-rail-word b{font-family:'Black Han Sans',sans-serif;font-size:17px;font-weight:400;color:var(--ink)}
.app-rail-word small{font-family:'Archivo',sans-serif;font-weight:800;font-size:9px;letter-spacing:.14em;color:var(--muted);text-transform:uppercase;margin-top:3px}
.app-rail-nav{display:flex;flex-direction:column;gap:2px}
.app-rail-link{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:7px;text-decoration:none;color:var(--ink);font-weight:800;font-size:14px;border:2px solid transparent}
.app-rail-link:hover{background:var(--paper3);border-color:var(--ink)}
.app-rail-link.active{background:var(--ink);color:var(--paper)}
.app-rail-no{font-family:'Archivo',sans-serif;font-weight:900;font-size:11px;background:var(--paper3);color:var(--ink);border:2px solid var(--ink);border-radius:5px;padding:2px 6px;flex:none}
.app-rail-link.active .app-rail-no{background:var(--yellow);border-color:var(--yellow)}
.app-rail-label small{display:block;font-family:'Archivo',sans-serif;font-size:9px;font-weight:800;letter-spacing:.12em;color:var(--muted)}
.app-rail-link.active .app-rail-label small{color:var(--paper);opacity:.7}
.app-rail-foot{margin-top:auto;padding-top:14px;border-top:2px solid var(--ink);display:flex;flex-direction:column;gap:8px}
.app-rail-cta{text-align:center}
.app-rail-settings{border:2px solid var(--ink);border-radius:7px;padding:8px;font-weight:800;font-size:13px;cursor:pointer;background:var(--paper);color:var(--ink);font-family:'Pretendard',sans-serif}
.app-rail-settings-panel{display:flex;flex-direction:column;gap:6px}
.app-rail-settings-panel[hidden]{display:none}
.app-topbar-tools{display:none}
.news-search-bar{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.news-search-count{font-weight:800;font-size:13px;color:var(--muted)}
@media(min-width:1024px){
  .top-nav .logo{display:none}
  #desktop-nav{display:none}
  .top-nav .nav-cta{display:none}
  .app-topbar-tools{display:flex;align-items:center;gap:10px;flex:1;justify-content:flex-end}
  .app-search{display:flex;gap:6px;flex:0 1 340px}
  .app-search input{flex:1;min-width:0;padding:8px 12px;border:2.5px solid var(--ink);border-radius:8px;background:var(--paper3);font-size:14px;box-shadow:3px 3px 0 var(--ink);font-family:'Pretendard',sans-serif}
  .app-icon-btn{position:relative;display:grid;place-items:center;width:40px;height:40px;flex:none;border:2.5px solid var(--ink);border-radius:9px;background:var(--paper);color:var(--ink);box-shadow:3px 3px 0 var(--ink);text-decoration:none}
  .app-icon-btn:hover{background:var(--yellow)}
  .app-bell-badge{position:absolute;top:-8px;right:-8px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:var(--red);color:#fff;font-size:11px;font-weight:900;display:grid;place-items:center;border:2px solid var(--ink);font-family:'Archivo',sans-serif}
  .app-bell-badge[hidden]{display:none}
}
@media(max-width:1023px){
  .app-shell{display:block;border:0}
  .app-body{min-height:0}
  .app-rail{position:static;height:auto;display:none}
}
/* UI-09: Cross-Linking & Search */
.news-card-wrap{border:2.5px solid var(--ink);border-radius:8px;background:var(--paper3);box-shadow:3px 3px 0 var(--ink);overflow:hidden}
.news-card-wrap .news-card{border:0;box-shadow:none;border-radius:0;display:block}
.news-xlink{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;border-top:2px solid var(--ink);background:var(--paper)}
.entity-chips{display:flex;flex-wrap:wrap;gap:6px}
.entity-chip{display:inline-block;padding:3px 10px;border:2px solid var(--ink);border-radius:20px;background:var(--paper2);font-size:12px;font-weight:800;text-decoration:none;color:var(--ink)}
.entity-chip:hover{background:var(--yellow)}
.entity-chip.chip-crypto{background:#DCE8FF}
.entity-chip.chip-graph{background:var(--paper)}
.meme-cta{margin-left:auto}
.news-kw-banner{display:flex;align-items:center;gap:10px;padding:10px 14px;border:2px solid var(--ink);border-radius:8px;background:var(--paper3);margin-bottom:16px}
/* Search overlay (desktop: centered dialog, mobile: full-screen) */
#search-overlay{position:fixed;inset:0;z-index:200}
#search-overlay[hidden]{display:none}
.search-overlay-backdrop{position:absolute;inset:0;background:rgba(21,19,13,.55)}
.search-overlay-panel{position:absolute;top:12%;left:50%;transform:translateX(-50%);width:min(560px,calc(100vw - 32px));background:var(--paper);border:3px solid var(--ink);border-radius:12px;box-shadow:6px 6px 0 var(--ink);padding:24px}
.search-overlay-close{position:absolute;top:10px;right:10px;border:2px solid var(--ink);background:var(--paper3);border-radius:6px;width:32px;height:32px;cursor:pointer;font-weight:900}
#search-overlay-form{display:flex;gap:8px}
#search-overlay-form .ws-input{flex:1}
.search-overlay-hint{margin:10px 0 0;font-size:13px;color:var(--muted)}
body.search-open{overflow:hidden}
@media(max-width:930px){
  #search-overlay .search-overlay-panel{top:0;left:0;transform:none;width:100%;height:100%;border-radius:0;border-left:0;border-right:0;box-shadow:none}
}
/* Search results page */
.intel-search-form{display:flex;gap:8px;margin-bottom:20px}
.intel-search-form .ws-input{flex:1;max-width:480px}
.search-count{font-weight:800;margin-bottom:16px}
.search-group{margin-bottom:24px}
.search-group h3{font-size:16px;margin:0 0 10px;padding-bottom:8px;border-bottom:2.5px solid var(--ink)}
.search-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.search-list li a{display:block;padding:10px 14px;border:2px solid var(--ink);border-radius:8px;background:var(--paper3);text-decoration:none;color:var(--ink)}
.search-list li a:hover{background:var(--paper2)}
.search-list li b{display:block;font-size:14px}
.search-list li small{color:var(--muted);font-size:12px}


/* PR-136: Health Center */
.ops-health-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
@media(max-width:767px){.ops-health-grid{grid-template-columns:1fr}}

/* PR-139: Freshness badges */
.freshness-badge{display:inline-block;font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--border,#ddd);margin-left:6px}
.freshness-fresh{background:#e8f5e9;color:#2e7d32;border-color:#a5d6a7}
.freshness-aging{background:#fff8e1;color:#f57f00;border-color:#ffe082}
.freshness-stale{background:#fff3e0;color:#e65100;border-color:#ffcc80}
.freshness-veryStale{background:#ffebee;color:#c62828;border-color:#ef9a9a}
.freshness-unknown{background:#f5f5f5;color:#757575}

/* Desktop hero banner (min-width: 1024px only) — mobile untouched */
@media (min-width: 1024px) {
  .hero-slide-bg img {
    object-fit: cover;
    object-position: center 48%;
  }
}

/* Home hero carousel: retain the original banner and its type/CTA hierarchy. */
.hero-slider{min-height:0;padding:24px 0 18px;overflow:hidden;background:var(--paper)}
.hero-slides{height:clamp(430px,43vw,540px);min-height:0;position:relative}
.hero-slide{position:absolute;inset:auto;left:50%;top:0;width:min(1100px,76%);height:100%;min-height:0;overflow:hidden;border-radius:14px;box-shadow:0 12px 34px rgba(13,20,38,.19);transform:translateX(-50%) scale(.92);opacity:0;visibility:hidden;pointer-events:none;transition:transform .4s var(--ease),opacity .4s var(--ease),visibility .4s;display:flex;align-items:center}
.hero-slide.active{position:absolute;transform:translateX(-50%) scale(1);opacity:1;visibility:visible;z-index:2;pointer-events:auto}
.hero-slide.is-prev{transform:translateX(-155%) scale(.94);opacity:.72;visibility:visible;z-index:1}
.hero-slide.is-next{transform:translateX(55%) scale(.94);opacity:.72;visibility:visible;z-index:1}
.hero-slide-content{width:100%;padding:48px clamp(26px,5vw,72px);box-sizing:border-box}
.hero-slide-content h1{font-size:clamp(36px,5.5vw,76px);max-width:820px}
.hero-slide-content .hero-tagline{max-width:680px}
.hero-slide-art{position:absolute;inset:0;display:grid;place-items:center;overflow:hidden}
.hero-slide-art::before{content:"";position:absolute;width:70%;aspect-ratio:1;right:-15%;top:-70%;border:2px solid rgba(255,255,255,.25);border-radius:50%;box-shadow:0 0 0 90px rgba(255,255,255,.045),0 0 0 180px rgba(255,255,255,.035)}
.hero-slide-art span{position:absolute;right:6%;bottom:-20%;font-family:'Archivo',sans-serif;font-size:clamp(240px,35vw,540px);font-weight:900;letter-spacing:-.12em;line-height:1;color:rgba(255,255,255,.12)}
.hero-slide-action{background:linear-gradient(120deg,#0a2350 8%,#0b3d91 55%,#3e69a9)}
.hero-slide-shops{background:linear-gradient(120deg,#3c270b 4%,#956018 58%,#c4933c)}
.hero-slide-community{background:linear-gradient(120deg,#371a28 4%,#9f2a32 65%,#d45c47)}
.hero-slide-news{background:linear-gradient(120deg,#142d30 4%,#176567 65%,#4d8e88)}
.hero-slide:not([data-banner="rok-us-alliance"]) .hero-slide-overlay{background:linear-gradient(90deg,rgba(5,15,35,.25),transparent 70%)}
.hero-arrow{top:calc(50% - 24px);width:48px;height:48px;background:var(--navy);border-color:#fff;box-shadow:0 3px 10px rgba(0,0,0,.25)}
.hero-prev{left:clamp(12px,7vw,110px)}.hero-next{right:clamp(12px,7vw,110px)}
.hero-controls{display:flex;align-items:center;justify-content:center;gap:20px;flex-wrap:wrap;min-height:56px;padding:10px 16px 0}
.hero-categories{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.hero-category{border:1.5px solid var(--ink);border-radius:999px;background:var(--paper3);color:var(--ink);padding:7px 13px;font:800 13px Pretendard,sans-serif;cursor:pointer}
.hero-category.active{background:var(--navy);color:#fff}
.hero-dots{position:static;transform:none;gap:7px}
.hero-dot{width:12px;height:12px;background:#98a7bf;border:1px solid var(--navy)}
.hero-dot.active{background:var(--red);border-color:var(--red)}
.hero-position{font:800 12px 'Archivo',sans-serif;color:var(--muted);min-width:34px}
.hero-slider :is(button,a):focus-visible,.hero-slider:focus-visible{outline:3px solid var(--yellow);outline-offset:3px}
@media(max-width:760px){
  .hero-slider{padding:12px 0 18px}
  .hero-slides{height:clamp(430px,118vw,560px)}
  .hero-slide{width:88%;border-radius:10px}
  .hero-slide.is-prev{transform:translateX(-148%) scale(.94)}
  .hero-slide.is-next{transform:translateX(48%) scale(.94)}
  .hero-slide-content{padding:32px 24px 54px}
  .hero-slide-content h1{font-size:clamp(32px,9vw,48px);line-height:.98}
  .hero-slide-content .hero-tagline{font-size:clamp(14px,3.8vw,18px);line-height:1.4}
  .hero-slide-content .kicker{font-size:11px;letter-spacing:.04em}
  .hero-slide-content .hero-cta{display:grid;grid-template-columns:1fr;gap:10px}
  .hero-slide-content .hero-cta .btn{width:100%;box-sizing:border-box}
  .hero-slide-art span{font-size:80vw;bottom:-7%}
  .hero-arrow{display:none}
  .hero-controls{gap:11px;padding-top:13px}
  .hero-category{font-size:12px;padding:6px 10px}
}
@media(prefers-reduced-motion:reduce){.hero-slide{transition:none}}

.app-rail-toggle{display:none}
@media(min-width:1280px){
  .app-shell{grid-template-columns:224px minmax(0,1fr);transition:grid-template-columns .18s ease}
  .app-shell.rail-collapsed{grid-template-columns:76px minmax(0,1fr)}
  .app-shell.has-inspector{grid-template-columns:224px minmax(0,1fr) minmax(300px,360px)}
  .app-shell.rail-collapsed.has-inspector{grid-template-columns:76px minmax(0,1fr) minmax(300px,360px)}
  .app-shell.rail-collapsed .app-rail{padding:12px 8px;align-items:center}
  .app-shell.rail-collapsed .app-rail-word,
  .app-shell.rail-collapsed .app-rail-label{display:none}
  .app-shell.rail-collapsed .app-rail-no{display:inline-flex}
  .app-shell.rail-collapsed .app-rail-link{justify-content:center;padding:10px}
  .app-shell.rail-collapsed .app-rail-cta-label{display:none}
  .app-shell.rail-collapsed .app-rail-head{flex-direction:column;justify-content:flex-start;align-items:center;gap:6px}
  .app-rail-toggle{display:grid;place-items:center;width:28px;height:28px;flex:none;border:2px solid var(--ink);border-radius:6px;background:var(--paper);cursor:pointer;font-size:14px;line-height:1}
  .app-rail-toggle:hover{background:var(--yellow)}
  .app-rail-head{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%}
  @media(prefers-reduced-motion:reduce){
    .app-shell{transition:none}
  }
}

/* Compact settings: gear only + viewport-fixed panel */
@media(min-width:1024px) and (max-width:1279px){
  .app-rail-settings-label{display:none}
  .app-rail-settings-panel{
    position:fixed;
    width:190px;
    z-index:140;
    background:var(--paper3);
    border:2.5px solid var(--ink);
    border-radius:8px;
    padding:8px;
    box-shadow:4px 4px 0 var(--ink);
  }
}
@media(min-width:1280px){
  .app-shell.rail-collapsed .app-rail-settings-label{display:none}
  .app-shell.rail-collapsed .app-rail-settings-panel{
    position:fixed;
    width:190px;
    z-index:140;
    background:var(--paper3);
    border:2.5px solid var(--ink);
    border-radius:8px;
    padding:8px;
    box-shadow:4px 4px 0 var(--ink);
  }
}

/* Final compact rail override (after base declarations) */
@media(min-width:1024px) and (max-width:1279px){
  .app-rail .app-rail-word,
  .app-rail .app-rail-label{
    display:none;
  }
  .app-rail .app-rail-no{
    display:inline-flex;
  }
}

/* P0: Mobile bottom nav size restoration (final override) */
@media(max-width:760px){
  .bottom-nav{
    position:fixed;
    left:12px;
    right:12px;
    bottom:max(8px, env(safe-area-inset-bottom));
    width:auto;
    margin:0;
    padding:7px;
    gap:5px;
    grid-template-columns:repeat(5,minmax(0,1fr));
    border-radius:18px;
  }
  .bottom-nav a{
    min-width:0;
    min-height:52px;
    padding:5px 2px;
    font-size:10.5px;
    line-height:1.05;
    gap:3px;
    white-space:nowrap;
  }
  .bottom-nav a .fk-icon{
    width:20px;
    height:20px;
    margin:0 auto 2px;
  }
  .bottom-nav span{
    font-size:20px;
  }
}

/* P1: Desktop topbar consolidation - single toolbar */
.app-more-wrap{position:relative;display:none}
.app-more-popover{
  position:absolute;
  right:0;
  top:calc(100% + 8px);
  width:220px;
  z-index:140;
  background:var(--paper3);
  border:2.5px solid var(--ink);
  border-radius:10px;
  padding:10px;
  box-shadow:4px 4px 0 var(--ink);
}
.app-more-popover{
  display:grid;
  gap:8px;
}
.app-more-popover[hidden]{
  display:none !important;
}
.app-more-popover .btn,
.app-more-popover .lang-toggle,
.app-more-popover .party-btn{
  justify-content:flex-start;
  width:100%;
}
.app-more-popover .brightness-wrap{
  display:flex;
  width:100%;
}
.app-more-popover .brightness-wrap > .btn{
  width:100%;
  justify-content:flex-start;
}
@media(min-width:1024px){
  /* Hide utility-bar second row on desktop */
  .top-nav .utility-bar{display:none}
  /* Override legacy 72px height */
  .top-nav .nav-inner{
    height:60px;
    min-height:60px;
  }
  /* Rail owns brand + nav on desktop */
  .top-nav .logo{display:none}
  .top-nav #desktop-nav{display:none}
  .top-nav .nav-cta{display:none}
  /* Single toolbar: full width */
  .top-nav .nav-inner{
    max-width:none;
    width:100%;
    padding-inline:20px;
  }
  .top-nav .wrap.nav-inner{
    max-width:none;
  }
  .app-topbar-tools{
    display:flex;
    align-items:center;
    gap:10px;
    width:100%;
    min-height:60px;
  }
  .app-topbar-tools .app-search{
    flex:0 1 420px;
    min-width:240px;
    margin-left:auto;
  }
  .app-topbar-tools .app-icon-btn{
    width:40px;
    height:40px;
    flex:none;
    display:grid;
    place-items:center;
  }
  .app-more-wrap{display:block}
}


/* ===== Pulse Feed / Gallery (#187) ===== */

.pulse-tabs {
  display: flex;
  gap: 4px;
  margin: 16px 0 24px;
  border-bottom: 1px solid var(--line, #e5e5e5);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.pulse-tab {
  padding: 10px 20px;
  font-weight: 600;
  color: var(--muted);
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  white-space: nowrap;
  text-decoration: none;
}

.pulse-tab.active {
  color: var(--ink);
  border-bottom-color: var(--blue, #2563eb);
}

.pulse-tab:focus-visible {
  outline: 2px solid var(--blue, #2563eb);
  outline-offset: 2px;
}

/* Feed */
.feed-composer {
  background: var(--card, #fff);
  border: 1px solid var(--line, #e5e5e5);
  border-radius: 12px;
  padding: 16px;
  margin-bottom: 24px;
}

.feed-composer h3 {
  margin: 0 0 12px;
  font-size: 1rem;
}

.composer-types {
  display: flex;
  gap: 12px;
  margin-bottom: 12px;
}

.composer-types label {
  display: flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
}

#composer-body, #composer-url {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid var(--line, #e5e5e5);
  border-radius: 8px;
  font: inherit;
  margin-bottom: 8px;
  box-sizing: border-box;
}

.composer-actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-top: 8px;
}

.composer-note {
  margin: 8px 0 0;
  font-size: 0.875rem;
  color: var(--muted);
}

.feed-card {
  background: var(--card, #fff);
  border: 1px solid var(--line, #e5e5e5);
  border-radius: 12px;
  padding: 16px;
  margin-bottom: 16px;
}

.feed-card-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
  font-size: 0.875rem;
}

.feed-author {
  font-weight: 600;
}

.feed-time {
  color: var(--muted);
}

.feed-type {
  margin-left: auto;
  background: var(--chip, #f0f0f0);
  padding: 2px 8px;
  border-radius: 12px;
  font-size: 0.75rem;
}

.feed-body {
  margin: 0 0 12px;
  line-height: 1.6;
  white-space: pre-wrap;
}

.feed-media img {
  max-width: 100%;
  height: auto;
  border-radius: 8px;
  display: block;
  margin-bottom: 8px;
}

.feed-link {
  display: block;
  padding: 12px;
  background: var(--chip, #f0f0f0);
  border-radius: 8px;
  margin-bottom: 12px;
  word-break: break-all;
  text-decoration: none;
  color: inherit;
}

.feed-artifact {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
  font-size: 0.875rem;
}

.feed-card-actions {
  display: flex;
  gap: 8px;
  border-top: 1px solid var(--line, #e5e5e5);
  padding-top: 12px;
}

.feed-action {
  background: none;
  border: 1px solid var(--line, #e5e5e5);
  border-radius: 8px;
  padding: 6px 16px;
  font: inherit;
  font-size: 0.875rem;
  cursor: pointer;
  color: var(--ink);
}

.feed-action:hover {
  background: var(--chip, #f0f0f0);
}

.feed-action:focus-visible {
  outline: 2px solid var(--blue, #2563eb);
  outline-offset: 2px;
}

/* Gallery */
.gallery-grid {
  display: grid;
  gap: 16px;
  grid-template-columns: 1fr;
}

@media (min-width: 768px) {
  .gallery-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .gallery-card.span-2 {
    grid-column: span 2;
  }
}

@media (min-width: 1280px) {
  .gallery-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

.gallery-card {
  background: var(--card, #fff);
  border: 1px solid var(--line, #e5e5e5);
  border-radius: 12px;
  overflow: hidden;
}

.gallery-card img {
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: auto;
}

.gallery-card-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 16px 4px;
  font-size: 0.875rem;
}

.gallery-card-meta .feed-action {
  margin-left: auto;
  padding: 4px 12px;
}

.gallery-card-meta .feed-action + .feed-action {
  margin-left: 0;
}

.gallery-caption {
  padding: 0 16px 12px;
  margin: 8px 0 0;
  font-size: 0.875rem;
  color: var(--muted);
  line-height: 1.5;
}

.login-note {
  text-align: center;
  padding: 24px;
  color: var(--muted);
}

/* ===== Organization Channels (#188) ===== */

.channel-grid {
  display: grid;
  gap: 16px;
  grid-template-columns: 1fr;
}

@media (min-width: 768px) {
  .channel-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

.channel-card {
  display: flex;
  gap: 16px;
  padding: 16px;
  background: var(--card, #fff);
  border: 1px solid var(--line, #e5e5e5);
  border-radius: 12px;
  text-decoration: none;
  color: inherit;
}

.channel-card:hover {
  border-color: var(--blue, #2563eb);
}

.channel-logo {
  width: 64px;
  height: 64px;
  border-radius: 12px;
  object-fit: cover;
  flex-shrink: 0;
}

.channel-logo-placeholder {
  width: 64px;
  height: 64px;
  border-radius: 12px;
  background: var(--chip, #f0f0f0);
  flex-shrink: 0;
}

.channel-card-info h3 {
  margin: 0 0 8px;
  font-size: 1.1rem;
}

.channel-card-info p {
  margin: 0 0 8px;
  color: var(--muted);
  font-size: 0.875rem;
  line-height: 1.5;
}

.channel-kind {
  font-size: 0.75rem;
  background: var(--chip, #f0f0f0);
  padding: 2px 8px;
  border-radius: 12px;
  text-transform: uppercase;
}

.channel-badge.verified {
  font-size: 0.75rem;
  background: #e6f4ea;
  color: #137333;
  padding: 2px 8px;
  border-radius: 12px;
  font-weight: 600;
}

.channel-header {
  margin-bottom: 24px;
}

.channel-cover {
  width: 100%;
  height: 160px;
  object-fit: cover;
  border-radius: 12px;
  margin-bottom: 16px;
}

.channel-header-info {
  display: flex;
  gap: 16px;
  align-items: flex-start;
  margin-bottom: 16px;
}

.channel-logo-lg {
  width: 80px;
  height: 80px;
  border-radius: 16px;
  object-fit: cover;
  flex-shrink: 0;
}

.channel-header-info h2 {
  margin: 0 0 8px;
}

.channel-meta {
  color: var(--muted);
  font-size: 0.875rem;
  margin: 8px 0 0;
}

.channel-actions {
  display: flex;
  gap: 8px;
}

.channel-tabs {
  display: flex;
  gap: 4px;
  border-bottom: 1px solid var(--line, #e5e5e5);
  margin-bottom: 24px;
  overflow-x: auto;
}

.channel-tab {
  padding: 10px 20px;
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  font: inherit;
  font-weight: 600;
  color: var(--muted);
  cursor: pointer;
  white-space: nowrap;
}

.channel-tab.active {
  color: var(--ink);
  border-bottom-color: var(--blue, #2563eb);
}

.channel-tab:focus-visible {
  outline: 2px solid var(--blue, #2563eb);
  outline-offset: 2px;
}

.channel-about h3 {
  margin: 24px 0 8px;
  font-size: 1rem;
}

.channel-about h3:first-child {
  margin-top: 0;
}

.channel-request, .channel-request-form {
  margin-top: 32px;
  padding: 20px;
  background: var(--card, #fff);
  border: 1px solid var(--line, #e5e5e5);
  border-radius: 12px;
}

.channel-request-form label {
  display: block;
  margin-bottom: 12px;
  font-size: 0.875rem;
  font-weight: 600;
}

.channel-request-form input,
.channel-request-form textarea {
  display: block;
  width: 100%;
  margin-top: 4px;
  padding: 8px 12px;
  border: 1px solid var(--line, #e5e5e5);
  border-radius: 8px;
  font: inherit;
  font-weight: normal;
  box-sizing: border-box;
}

.feed-card .channel-badge-inline {
  font-size: 0.75rem;
  background: var(--chip, #f0f0f0);
  padding: 2px 8px;
  border-radius: 12px;
  margin-left: 8px;
}

/* ===== Community Moderation (#189) ===== */

.ops-card {
  background: var(--card, #fff);
  border: 1px solid var(--line, #e5e5e5);
  border-radius: 12px;
  padding: 16px;
  margin-bottom: 16px;
}

.ops-card h4 {
  margin: 0 0 12px;
}

.report-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
}

.report-reason {
  background: #fef3c7;
  color: #92400e;
  padding: 4px 12px;
  border-radius: 12px;
  font-size: 0.875rem;
  font-weight: 600;
}

.report-time {
  color: var(--muted);
  font-size: 0.875rem;
}

.report-post {
  background: var(--chip, #f5f5f5);
  border-radius: 8px;
  padding: 12px;
  margin-bottom: 12px;
}

.report-post p {
  margin: 4px 0;
  font-size: 0.875rem;
}

.post-preview {
  white-space: pre-wrap;
  line-height: 1.5;
  margin: 8px 0 !important;
}

.report-detail {
  font-size: 0.875rem;
  color: var(--muted);
  font-style: italic;
}

.ops-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 12px;
}

.btn-warning {
  background: #f59e0b;
  color: white;
}

.btn-danger {
  background: #ef4444;
  color: white;
}

/* ===== Lineage (#191) ===== */

.lineage-strip {
  margin: 24px 0;
  padding: 16px;
  background: var(--card, #fff);
  border: 1px solid var(--line, #e5e5e5);
  border-radius: 12px;
}

.lineage-strip h4 {
  margin: 0 0 12px;
  font-size: 0.9rem;
}

.lineage-chain {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.lineage-node {
  padding: 8px 12px;
  background: var(--chip, #f0f0f0);
  border-radius: 8px;
  font-size: 0.875rem;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.lineage-node.current {
  border: 2px solid var(--blue, #2563eb);
}

.lineage-label {
  font-weight: 600;
  font-size: 0.75rem;
  text-transform: uppercase;
  color: var(--muted);
}

.lineage-arrow {
  color: var(--muted);
  font-size: 1.2rem;
}

.lineage-children {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--line, #e5e5e5);
}

.lineage-children h5 {
  margin: 0 0 12px;
  font-size: 0.875rem;
}

/* ===== Events (#191) ===== */

.event-card {
  background: var(--card, #fff);
  border: 1px solid var(--line, #e5e5e5);
  border-radius: 12px;
  padding: 16px;
  margin-bottom: 12px;
}

.event-card h4 {
  margin: 0 0 8px;
}

.event-date {
  color: var(--blue, #2563eb);
  font-weight: 600;
  margin: 0 0 8px;
}

/* ===== Channel filters (#191) ===== */

.channel-filters {
  display: flex;
  gap: 8px;
  margin-bottom: 20px;
  overflow-x: auto;
}

.filter-btn {
  padding: 8px 16px;
  border: 1px solid var(--line, #e5e5e5);
  border-radius: 20px;
  background: none;
  font: inherit;
  font-size: 0.875rem;
  cursor: pointer;
  white-space: nowrap;
}

.filter-btn.active {
  background: var(--ink);
  color: white;
  border-color: var(--ink);
}

/* ===== Retention UX (#191) ===== */

.retention-notice {
  font-size: 0.8rem;
  color: var(--muted);
  padding: 4px 8px;
  background: var(--chip, #f0f0f0);
  border-radius: 6px;
  display: inline-block;
  margin-top: 8px;
}

.expires-soon {
  color: #92400e;
  background: #fef3c7;
}

/* ===== Regional filter (#192) ===== */

.region-filter {
  margin: 12px 0 20px;
}

.region-filter select {
  padding: 8px 12px;
  border: 1px solid var(--line, #e5e5e5);
  border-radius: 8px;
  font: inherit;
  background: var(--card, #fff);
}

.channel-region {
  font-size: 0.8rem;
  color: var(--muted);
  margin: 4px 0 0;
}

/* ============================================================================
   FK NIGHT — Component refinements
   ============================================================================ */

/* Focus states (stronger in night) */
[data-theme="night"] :focus-visible {
  outline: 2px solid var(--night-gold-strong);
  outline-offset: 2px;
}

/* Buttons */
[data-theme="night"] .btn {
  border-color: var(--night-line-2);
}
[data-theme="night"] .btn-red {
  background: var(--night-red);
  border-color: var(--night-red-soft);
  color: var(--night-ink-1);
}
[data-theme="night"] .btn-yellow {
  background: var(--night-gold);
  border-color: var(--night-gold-strong);
  color: var(--night-bg-0);
}

/* Forms */
[data-theme="night"] input,
[data-theme="night"] textarea,
[data-theme="night"] select {
  background: var(--night-surface-1);
  border-color: var(--night-line-2);
  color: var(--night-ink-1);
}
[data-theme="night"] input::placeholder,
[data-theme="night"] textarea::placeholder {
  color: var(--night-ink-3);
}
[data-theme="night"] input:focus,
[data-theme="night"] textarea:focus,
[data-theme="night"] select:focus {
  border-color: var(--night-gold-strong);
  box-shadow: 0 0 0 2px rgba(225, 194, 127, .24);
}

/* Cards - 3 level hierarchy */
[data-theme="night"] .card-level-1 {
  background: var(--night-bg-1);
  border: 1px solid var(--night-line-soft);
}
[data-theme="night"] .card-level-2 {
  background: var(--night-surface-1);
  border: 1px solid var(--night-line-soft);
}
[data-theme="night"] .card-level-3 {
  background: var(--night-surface-2);
  border: 1px solid var(--night-line-1);
}

/* Selected states */
[data-theme="night"] .filter-btn.active,
[data-theme="night"] .channel-tab.active {
  background: var(--night-surface-2);
  border-color: var(--night-gold);
  color: var(--night-ink-1);
}

/* Chips */
[data-theme="night"] .chip-red {
  background: var(--night-red-soft);
  color: var(--night-ink-1);
  border-color: var(--night-red);
}
[data-theme="night"] .chip-blue {
  background: var(--night-blue-soft);
  color: var(--night-ink-1);
}

/* Share button */
[data-theme="night"] .share-btn {
  border: 1.5px solid var(--night-line-2);
  background: var(--night-surface-1);
  color: var(--night-ink-1);
  border-radius: 8px;
  padding: 8px 16px;
  font: inherit;
  font-size: 0.875rem;
  cursor: pointer;
}
[data-theme="night"] .share-btn:hover {
  border-color: var(--night-gold);
  background: var(--night-surface-2);
}

/* Lineage */
[data-theme="night"] .lineage-strip {
  background: var(--night-surface-1);
  border-color: var(--night-line-soft);
}
[data-theme="night"] .lineage-node {
  background: var(--night-surface-2);
  border: 1px solid var(--night-line-soft);
}
[data-theme="night"] .lineage-node.current {
  border-color: var(--night-gold);
}

/* Event cards */
[data-theme="night"] .event-card {
  background: var(--night-surface-1);
  border-color: var(--night-line-soft);
}
[data-theme="night"] .event-date {
  color: var(--night-gold);
}

/* Night grain: reduced for bronze backgrounds */
[data-theme="night"] body::after {
  opacity: .018;
}

/* Text hierarchy - ensure readability */
[data-theme="night"] {
  --text-primary: var(--night-ink-1);
  --text-secondary: var(--night-ink-2);
  --text-muted: var(--night-ink-3);
}

/* ============================================================================
   FK NIGHT — Mobile bottom nav contrast fix
   Pasted issue: inactive items invisible in dark/night mode
   ============================================================================ */
@media (max-width: 760px) {
  [data-theme="night"] .bottom-nav {
    background: rgba(28, 25, 19, .96);
    border: 1.5px solid var(--night-line-1);
    box-shadow: 0 -2px 14px rgba(0, 0, 0, .4);
  }

  [data-theme="night"] .bottom-nav a {
    color: var(--night-ink-2);
  }

  [data-theme="night"] .bottom-nav a .fk-icon,
  [data-theme="night"] .bottom-nav a span:first-child {
    color: var(--night-ink-1);
    opacity: 1;
  }

  [data-theme="night"] .bottom-nav a.active {
    background: var(--night-gold);
    color: var(--night-bg-0);
  }

  [data-theme="night"] .bottom-nav a.active .fk-icon,
  [data-theme="night"] .bottom-nav a.active span {
    color: var(--night-bg-0);
  }
}

/* PR #204: Channel Admin — Invite & Members */
.admin-section { margin: 1.5rem 0; }
.admin-section h3 { margin-bottom: 1rem; }
.invite-create {
  display: flex; gap: 0.75rem; align-items: end; flex-wrap: wrap;
  margin-bottom: 1rem; padding: 1rem;
  background: var(--fk-surface, #f8f8f8); border-radius: 8px;
}
.invite-create label { display: flex; flex-direction: column; gap: 0.25rem; font-size: 0.875rem; }
.invite-new {
  margin-bottom: 1rem; padding: 1rem;
  background: var(--fk-surface, #f8f8f8); border-radius: 8px;
}
.invite-url-row { display: flex; gap: 0.5rem; margin-top: 0.5rem; }
.invite-url-row input { flex: 1; }
.invite-list { display: flex; flex-direction: column; gap: 0.75rem; }
.invite-card {
  display: flex; justify-content: space-between; align-items: center;
  padding: 0.875rem; border: 1px solid var(--fk-border, #e0e0e0); border-radius: 8px;
  gap: 0.75rem; flex-wrap: wrap;
}
.invite-meta { font-size: 0.875rem; color: var(--fk-muted, #666); }
.invite-actions { display: flex; gap: 0.5rem; }
.members-list { display: flex; flex-direction: column; gap: 0.75rem; }
.member-card {
  display: flex; justify-content: space-between; align-items: center;
  padding: 0.875rem; border: 1px solid var(--fk-border, #e0e0e0); border-radius: 8px;
  gap: 0.75rem; flex-wrap: wrap;
}
.member-handle { font-weight: 600; }
.member-meta { font-size: 0.8125rem; color: var(--fk-muted, #666); margin-left: 0.5rem; }
.member-actions { display: flex; gap: 0.5rem; align-items: center; flex-wrap: wrap; }
.fk-toast {
  position: fixed; bottom: 2rem; left: 50%; transform: translateX(-50%);
  background: #222; color: #fff; padding: 0.75rem 1.25rem; border-radius: 8px;
  z-index: 9999; font-size: 0.875rem;
}
@media (max-width: 480px) {
  .invite-card, .member-card { flex-direction: column; align-items: stretch; }
  .invite-actions, .member-actions { justify-content: flex-end; }
}

/* PWA Intro Motion — mobile installed PWA only (presentation layer) */
#fk-pwa-intro {
  position: fixed;
  inset: 0;
  z-index: 2147483647;
  width: 100vw;
  height: 100dvh;
  overflow: hidden;
  background: #faf8f5; /* matches video first frame */
  display: flex;
  align-items: center;
  justify-content: center;
}
#fk-pwa-intro video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
#fk-pwa-intro.fk-intro-fadeout {
  opacity: 0;
  transition: opacity 160ms ease-out;
  pointer-events: none;
}
@media (prefers-reduced-motion: reduce) {
  #fk-pwa-intro { display: none !important; }
}
