*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#F1F5F9;--surface:#FFF;--text:#0F172A;--text-s:#475569;--text-m:#94A3B8;
  --border:#E2E8F0;--primary:#1E3A5F;--primary-l:#2D5A8E;
  --green:#059669;--green-bg:#ECFDF5;--green-b:#A7F3D0;
  --red:#DC2626;--red-bg:#FEF2F2;--red-b:#FECACA;
  --amber:#D97706;--amber-bg:#FFFBEB;--amber-b:#FDE68A;
  --radius:12px;--shadow:0 1px 3px rgba(0,0,0,.08),0 4px 12px rgba(0,0,0,.04);
  --shadow-lg:0 4px 20px rgba(0,0,0,.08),0 8px 32px rgba(0,0,0,.04);
}
html{scroll-behavior:smooth}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh;-webkit-font-smoothing:antialiased}

/* HEADER */
header{background:var(--primary);color:#fff;padding:.9rem 1.25rem;position:sticky;top:0;z-index:100;box-shadow:0 2px 8px rgba(0,0,0,.15)}
.header-inner{max-width:900px;margin:0 auto;display:flex;align-items:center;justify-content:space-between}
.logo{font-size:1.15rem;font-weight:800;letter-spacing:-.02em;display:flex;align-items:center;gap:.5rem;text-decoration:none;color:#fff}
.logo-icon{width:30px;height:30px;background:rgba(255,255,255,.15);border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:1rem}
.header-date{font-size:.78rem;opacity:.8;font-weight:500}

/* BREADCRUMBS */
.crumbs{max-width:900px;margin:0 auto;padding:.6rem 1rem 0;font-size:.75rem;color:var(--text-m)}
.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}
.crumbs a{color:var(--text-s);text-decoration:none}
.crumbs a:hover{color:var(--primary);text-decoration:underline}
.crumbs li:not(:last-child)::after{content:'›';margin-left:.35rem;color:var(--text-m)}
.crumbs li[aria-current]{color:var(--text);font-weight:600}

/* FESTIVO BANNER */
.festivo-banner{max-width:900px;margin:.75rem auto 0;padding:0 1rem}
.festivo-banner .inner{background:var(--green-bg);border:2px solid var(--green-b);border-radius:var(--radius);padding:.7rem 1rem;font-size:.85rem;color:var(--text);display:flex;gap:.5rem;align-items:center}
.festivo-banner strong{color:var(--green)}

/* HERO */
.hero{max-width:900px;margin:0 auto;padding:1.25rem 1rem 0}
.hero h1{font-size:1.45rem;font-weight:800;letter-spacing:-.03em;margin-bottom:.1rem}
.hero .subtitle{color:var(--text-s);font-size:.88rem;margin-bottom:.9rem}

/* CITY GRID (hub) */
.city-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:.4rem}
.city-btn{display:block;background:var(--surface);border:2px solid var(--border);border-radius:8px;padding:.5rem .15rem;font-size:.78rem;font-weight:600;color:var(--text);cursor:pointer;transition:all .15s;text-align:center;line-height:1.15;text-decoration:none}
.city-btn:hover{border-color:var(--primary-l);background:#F8FAFC}
.city-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.city-btn .dept{display:block;font-size:.58rem;font-weight:400;opacity:.55;margin-top:1px}
.city-extra-grid{display:none;grid-template-columns:repeat(5,1fr);gap:.4rem;margin-top:.4rem}
.city-extra-grid.show{display:grid}
.more-btn{margin-top:.4rem;width:100%;background:none;border:1px dashed var(--border);border-radius:8px;padding:.45rem;font-size:.8rem;font-weight:600;color:var(--text-s);cursor:pointer;transition:all .15s}
.more-btn:hover{border-color:var(--primary-l);color:var(--primary)}

/* TODAY SUMMARY */
.today-strip{margin-top:.75rem;display:none;animation:fadeIn .25s ease}
.today-strip.visible{display:block}
@keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.today-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:1rem 1.25rem;display:flex;gap:1rem;align-items:center}
.today-left{flex:1;min-width:0}
.today-city-name{font-size:1.15rem;font-weight:800;letter-spacing:-.02em}
.today-meta{font-size:.8rem;color:var(--text-s);margin-bottom:.35rem}
.today-info{font-size:.8rem;color:var(--text-s);line-height:1.45}
.today-info strong{color:var(--text)}
.today-right{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:130px;border-radius:10px;padding:.8rem .6rem;text-align:center}
.today-right.restricted{background:var(--red-bg);border:2px solid var(--red-b)}
.today-right.free{background:var(--green-bg);border:2px solid var(--green-b)}
.today-right.weekend{background:var(--green-bg);border:2px solid var(--green-b)}
.today-label{font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:.15rem}
.today-right.restricted .today-label{color:var(--red)}
.today-right.free .today-label{color:var(--green)}
.today-right.weekend .today-label{color:var(--green)}
.today-digits{font-size:2rem;font-weight:900;letter-spacing:.12em;line-height:1}
.today-right.restricted .today-digits{color:var(--red)}
.today-right.free .today-digits{color:var(--green)}
.today-right.weekend .today-digits{color:var(--green)}
.today-right.verify{background:var(--amber-bg);border:2px solid var(--amber-b)}
.today-right.verify .today-label{color:var(--amber)}
.today-right.verify .today-digits{color:var(--amber);font-size:1.4rem}
.today-right.na .today-digits{font-size:1.4rem}
.today-tag{margin-top:.25rem;font-size:.7rem;font-weight:600;color:var(--text-s)}

/* PLATE INPUT */
.plate-strip{margin-top:.75rem;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:.85rem 1.25rem;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}
.plate-strip-label{font-size:.85rem;font-weight:700;color:var(--text);white-space:nowrap}
.plate-input{width:70px;font-size:1.8rem;font-weight:800;text-align:center;padding:.35rem;border:2px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);letter-spacing:.15em;transition:border-color .15s}
.plate-input:focus{outline:none;border-color:var(--primary);background:#fff}
.plate-hint{font-size:.75rem;color:var(--text-m);flex:1;min-width:100px}
.check-btn{padding:.55rem 1.25rem;background:var(--primary);color:#fff;border:none;border-radius:8px;font-size:.85rem;font-weight:700;cursor:pointer;transition:background .15s;white-space:nowrap}
.check-btn:hover{background:var(--primary-l)}

/* PLATE RESULT */
.result{margin-top:.75rem;padding:1rem;border-radius:var(--radius);display:none;animation:fadeIn .25s ease}
.result.visible{display:flex;align-items:flex-start;gap:.75rem}
.result.can-drive{background:var(--green-bg);border:2px solid var(--green-b)}
.result.restricted{background:var(--red-bg);border:2px solid var(--red-b)}
.result.weekend{background:var(--green-bg);border:2px solid var(--green-b)}
.result.verify{background:var(--amber-bg);border:2px solid var(--amber-b)}
.result.verify .result-title{color:var(--amber)}
.result-icon{font-size:1.8rem;flex-shrink:0}
.result-body{flex:1;min-width:0}
.result-title{font-size:1.05rem;font-weight:800;margin-bottom:.15rem}
.result.can-drive .result-title{color:var(--green)}
.result.restricted .result-title{color:var(--red)}
.result.weekend .result-title{color:var(--green)}
.result-detail{font-size:.85rem;color:var(--text-s);line-height:1.45}

/* NARROW CONTENT */
.narrow{max-width:640px;margin:0 auto;padding:1.25rem 1rem 3rem}
.narrow.wide{max-width:760px}

/* WEEKLY SCHEDULE */
.schedule-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem;margin-bottom:1.25rem}
.schedule-card.hidden{display:none}
.schedule-card h2{font-size:1.05rem;font-weight:700;margin-bottom:.75rem}
.schedule-table{width:100%;border-collapse:collapse}
.schedule-table th,.schedule-table td{padding:.55rem .4rem;text-align:center;font-size:.85rem;border-bottom:1px solid var(--border)}
.schedule-table th{font-weight:700;color:var(--text-s);font-size:.7rem;text-transform:uppercase;letter-spacing:.05em}
.schedule-table tr.today{background:var(--primary);color:#fff}
.schedule-table tr.today td{border-color:transparent;font-weight:700}
.digits-cell{font-weight:800;font-size:1rem;letter-spacing:.1em}

/* INFO / FAQ / ARTICLE */
.info-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem;margin-bottom:1rem}
.info-card h2{font-size:1.05rem;font-weight:700;margin-bottom:.75rem}
.info-card h3{font-size:.95rem;font-weight:700;margin:1rem 0 .4rem}
.info-card p{font-size:.9rem;color:var(--text-s);margin-bottom:.75rem;line-height:1.6}
.info-card p:last-child{margin-bottom:0}
.info-card ul{margin:0 0 .75rem 1.1rem}
.info-card li{font-size:.9rem;color:var(--text-s);margin-bottom:.3rem}
.faq-item{border-bottom:1px solid var(--border);padding:.75rem 0}
.faq-item:last-child{border-bottom:none}
.faq-q{font-weight:700;font-size:.9rem;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:.5rem}
.faq-q::after{content:'+';font-size:1.2rem;font-weight:400;color:var(--text-m);flex-shrink:0}
.faq-item.open .faq-q::after{content:'−'}
.faq-a{font-size:.85rem;color:var(--text-s);line-height:1.6;max-height:0;overflow:hidden;transition:max-height .3s,padding .3s}
.faq-item.open .faq-a{max-height:400px;padding-top:.5rem}
.city-links{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;margin-top:.75rem}
.city-link{display:block;padding:.5rem .6rem;background:var(--bg);border-radius:8px;text-decoration:none;color:var(--primary);font-size:.82rem;font-weight:600;transition:background .15s}
.city-link:hover{background:var(--border)}

/* CARD CTA / related */
.cta-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}
.cta-pill{display:inline-block;padding:.5rem .9rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-full,9999px);text-decoration:none;color:var(--primary);font-size:.82rem;font-weight:600}
.cta-pill:hover{border-color:var(--primary-l);background:#F8FAFC}

/* FESTIVOS TABLE */
.fest-table{width:100%;border-collapse:collapse}
.fest-table th,.fest-table td{padding:.5rem .4rem;text-align:left;font-size:.85rem;border-bottom:1px solid var(--border)}
.fest-table th{font-weight:700;color:var(--text-s);font-size:.7rem;text-transform:uppercase;letter-spacing:.05em}
.fest-table tr.past{opacity:.5}
.fest-table tr.next td{background:var(--amber-bg);font-weight:700}
.fest-date{font-weight:700;white-space:nowrap}

footer{max-width:640px;margin:0 auto;padding:1.5rem 1rem;text-align:center;font-size:.78rem;color:var(--text-m);line-height:1.6}
footer a{color:var(--text-s)}
.foot-nav{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem 1rem;margin-bottom:.75rem}
.foot-nav a{color:var(--text-s);text-decoration:none}
.foot-nav a:hover{color:var(--primary);text-decoration:underline}

@media(max-width:700px){
  .city-grid,.city-extra-grid{grid-template-columns:repeat(4,1fr)}
  .today-card{flex-direction:column;gap:.6rem}
  .today-right{min-width:auto;width:100%;flex-direction:row;gap:.75rem;padding:.6rem 1rem}
  .today-digits{font-size:1.6rem}
  .plate-strip{flex-direction:column;align-items:stretch;gap:.5rem}
}
@media(max-width:400px){
  .city-grid,.city-extra-grid{grid-template-columns:repeat(3,1fr)}
  .city-btn{font-size:.7rem;padding:.4rem .1rem}
  .hero h1{font-size:1.2rem}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
