/* ---------- buttons ---------- */
.btn-red, .btn-outline, .btn-primary, .btn-ghost, .link-btn{font-family:'IBM Plex Mono',monospace;cursor:pointer;border-radius:5px;}
.btn-red, .btn-outline{font-size:13px;font-weight:600;padding:12px 20px;}
.btn-red{background:var(--red);color:var(--white);border:2px solid var(--red);}
.btn-red:hover{background:var(--red-dark);border-color:var(--red-dark);}
.btn-outline{background:transparent;color:var(--ink);border:2px solid var(--ink);text-decoration:none;display:inline-block;}
.btn-outline:hover{border-color:var(--red);color:var(--red);}
.btn-primary{background:var(--red);color:var(--white);border:none;padding:11px 16px;font-weight:700;font-size:13.5px;margin-top:6px;}
.btn-primary:hover{background:var(--red-dark);}
.btn-primary:disabled{opacity:.5;cursor:not-allowed;}
.btn-ghost{background:transparent;border:1px solid var(--line);color:var(--muted);padding:8px 14px;font-size:12px;}
.btn-ghost:hover{border-color:var(--red);color:var(--red);}
.link-btn{background:none;border:none;color:var(--red);font-size:12.5px;font-weight:600;text-decoration:underline;}

.theme-toggle{width:36px;height:36px;border-radius:5px;border:2px solid var(--ink);background:var(--white);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;}
.theme-toggle:hover{border-color:var(--red);color:var(--red);}

.seal{width:34px;height:34px;flex:none;border-radius:5px;background:var(--term-bg);display:flex;align-items:center;justify-content:center;font-family:'IBM Plex Mono',monospace;color:var(--red);font-weight:700;font-size:15px;}
.seal .cursor{display:inline-block;width:6px;height:12px;background:var(--red);margin-left:2px;}

/* ---------- terminal (hero + file-tab strips) ---------- */
.terminal{background:var(--term-bg);border-radius:8px;border:1px solid var(--term-line);overflow:hidden;color:var(--term-text);font-family:'IBM Plex Mono',monospace;box-shadow:0 18px 40px -20px rgba(0,0,0,.5);}
.terminal .bar{display:flex;align-items:center;gap:6px;padding:9px 12px;background:var(--term-bar);border-bottom:1px solid var(--term-line);}
.terminal .dot{width:9px;height:9px;border-radius:50%;}
.terminal .dot.r{background:var(--red);} .terminal .dot.y{background:var(--warn);} .terminal .dot.g{background:var(--ok);}
.terminal .fname{margin-left:8px;font-size:11px;color:#948E88;}
.terminal .body{padding:18px 16px;font-size:12.5px;line-height:1.85;}
.terminal .ln{white-space:pre-wrap;}
.terminal .crit{color:#FF5C6C;font-weight:600;}
.terminal .high{color:#FF9A4D;}
.terminal .med{color:var(--warn);}
.terminal .ok{color:#5FCB88;}
.terminal .dim{color:#948E88;}
.terminal .cursor-blink{display:inline-block;width:7px;height:13px;background:var(--red);animation:blink 1s steps(1) infinite;vertical-align:middle;margin-left:2px;}
@keyframes blink{50%{opacity:0;}}

.file-bar{display:flex;align-items:center;gap:6px;padding:8px 12px;background:var(--term-bar);border-radius:8px 8px 0 0;}
.file-bar .dot{width:7px;height:7px;border-radius:50%;}
.file-bar .fname{margin-left:6px;font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:#948E88;}

/* ---------- expertise cards ---------- */
.expertise-card{border:1px solid var(--line);border-radius:8px;background:var(--white);overflow:hidden;}
.expertise-card .card-body{padding:22px 24px 26px;}
.expertise-card .num{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--red);margin-bottom:10px;display:block;}
.expertise-card h3{font-size:22px;margin:0 0 10px;font-family:'Inter',sans-serif;font-weight:700;}
.expertise-card p{color:var(--muted);font-size:14px;line-height:1.55;margin:0 0 14px;}
.chip-row{display:flex;flex-wrap:wrap;gap:8px;}
.chip{font-family:'IBM Plex Mono',monospace;font-size:10.5px;background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:5px 9px;color:var(--ink);}

/* ---------- process ---------- */
.process-step{border-top:2px solid var(--ink);padding-top:14px;}
.process-step .step-num{font-family:'IBM Plex Mono',monospace;font-size:22px;font-weight:700;color:var(--red);line-height:1;}
.process-step h3{font-size:17px;margin:8px 0 8px;font-family:'Inter',sans-serif;}
.process-step p{font-size:13.5px;color:var(--muted);line-height:1.55;margin:0;}

/* ---------- pricing / packs ---------- */

.pack-card{border:1px solid var(--line);border-radius:8px;position:relative;background:var(--white);display:flex;flex-direction:column;overflow:hidden;}
.pack-card.highlight{border-color:var(--red);box-shadow:0 0 0 1px var(--red);}
.pack-card-body{padding:24px;display:flex;flex-direction:column;flex:1;}
.pack-header{display:flex;align-items:center;gap:10px;margin-bottom:6px;flex-wrap:wrap;}
.pack-emoji{font-size:26px;line-height:1;}
.pack-card h3{font-size:19px;margin:0;font-family:'Inter',sans-serif;font-weight:700;}
.combo-tag{font-family:'IBM Plex Mono',monospace;font-size:9.5px;background:var(--red);color:var(--white);padding:3px 7px;border-radius:4px;letter-spacing:.02em;}
.pack-tagline{font-family:'IBM Plex Mono',monospace;font-size:12.5px;color:var(--red);margin:0 0 12px;}
.pack-card .desc{font-size:13.5px;color:var(--muted);margin-bottom:14px;line-height:1.55;}
.pack-card ul{list-style:none;padding:0;margin:0 0 14px;flex:1;}
.pack-card li{font-size:13px;padding:5px 0 5px 18px;position:relative;color:var(--ink);}
.pack-card li::before{content:"›";position:absolute;left:0;color:var(--red);font-weight:700;}
.pack-note{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--muted);font-style:italic;margin-bottom:16px;}
.pack-card button{width:100%;}

.pack-chip{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:14px 18px;margin-bottom:22px;}
.pack-chip .p-name{font-weight:700;font-size:14.5px;font-family:'IBM Plex Mono',monospace;}
.pack-chip .p-price{font-family:'IBM Plex Mono',monospace;color:var(--red);margin-left:8px;}

/* ---------- calendar ---------- */
.card{background:var(--white);border:1px solid var(--line);border-radius:8px;padding:18px;}
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
.cal-head .month{font-family:'IBM Plex Mono',monospace;font-size:15px;text-transform:uppercase;font-weight:700;}
.cal-nav{display:flex;gap:6px;}
.cal-nav button{width:30px;height:30px;border-radius:5px;border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer;font-size:14px;}
.cal-nav button:hover{border-color:var(--red);color:var(--red);}
.cal-nav button:focus-visible{outline:2px solid var(--red);}

.dow-row{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px;}
.dow-row span{font-family:'IBM Plex Mono',monospace;font-size:9.5px;color:var(--muted);text-align:center;}
.days-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;}
.day-cell{aspect-ratio:1/0.9;border-radius:6px;border:1px solid transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:'IBM Plex Mono',monospace;font-size:12.5px;color:var(--ink);cursor:pointer;position:relative;background:var(--panel);}
.day-cell .num{font-weight:500;}
.day-cell.outside{opacity:0;pointer-events:none;}
.day-cell.disabled{color:var(--muted);opacity:.4;cursor:not-allowed;background:transparent;}
.day-cell.available:hover{border-color:var(--red);}
.day-cell.available:focus-visible{outline:2px solid var(--red);}
.day-cell.selected{border-color:var(--red);box-shadow:0 0 0 1px var(--red) inset;}
.day-cell.today .num{color:var(--red);text-decoration:underline;}
.day-cell .dot{width:4px;height:4px;border-radius:50%;background:var(--ok);margin-top:3px;}
.day-cell.full .dot{background:var(--red);}
.day-cell.blocked{background:repeating-linear-gradient(135deg, rgba(212,20,47,0.10) 0px, rgba(212,20,47,0.10) 4px, transparent 4px, transparent 9px);color:var(--red-dark);cursor:pointer;}
.day-cell.blocked .num{color:var(--red);}
.legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:14px;font-size:10.5px;color:var(--muted);font-family:'IBM Plex Mono',monospace;}
.legend span{display:inline-flex;align-items:center;gap:6px;}
.legend i{width:8px;height:8px;border-radius:2px;display:inline-block;}

/* ---------- booking side panel ---------- */
.side-title{font-family:'IBM Plex Mono',monospace;font-size:16px;margin:0 0 4px;font-weight:700;text-transform:uppercase;}
.side-sub{color:var(--muted);font-size:12.5px;margin:0 0 14px;}
.slots{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
.slot-btn{font-family:'IBM Plex Mono',monospace;font-size:13px;padding:9px 4px;text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:5px;color:var(--ink);cursor:pointer;}
.slot-btn:hover{border-color:var(--red);}
.slot-btn.picked{background:var(--red);color:var(--white);border-color:var(--red);}
.empty-note{color:var(--muted);font-size:13px;font-style:italic;padding:10px 0;}

form.book-form{display:flex;flex-direction:column;gap:10px;margin-top:16px;}
.field label{display:block;font-size:11px;color:var(--muted);margin-bottom:4px;font-family:'IBM Plex Mono',monospace;}
.field input, .field select, .field textarea{width:100%;background:var(--panel);border:1px solid var(--line);color:var(--ink);border-radius:5px;padding:9px 10px;font-family:'Inter',sans-serif;font-size:13.5px;}
.field input:focus, .field select:focus, .field textarea:focus{outline:2px solid var(--red);border-color:transparent;}
.field textarea{resize:vertical;min-height:60px;}

.ticket{border:1.5px solid var(--red);border-radius:8px;padding:0;margin-top:16px;background:var(--red-tint);overflow:hidden;}
.ticket .t-strip{font-family:'IBM Plex Mono',monospace;font-size:10px;color:#8a5a5f;background:#F7DCDD;padding:8px 16px;border-bottom:1px dashed var(--red);}
.ticket .t-body{padding:16px 18px;}
.ticket .t-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px;}
.ticket .t-head .t-ref{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--red);font-weight:700;}
.ticket .t-service{font-family:'IBM Plex Mono',monospace;font-size:17px;margin:2px 0 12px;font-weight:700;}
.perforation{border-top:1px dashed var(--line);margin:12px 0;}
.t-row{display:flex;justify-content:space-between;font-size:13px;padding:3px 0;color:var(--ink);}
.t-row span:first-child{color:var(--muted);font-family:'IBM Plex Mono',monospace;font-size:11px;}

/* ---------- admin ---------- */
.pin-box{max-width:340px;margin:60px auto;text-align:center;}
.pin-box input{width:100%;text-align:center;letter-spacing:.3em;font-family:'IBM Plex Mono',monospace;font-size:18px;background:var(--panel);border:1px solid var(--line);color:var(--ink);border-radius:5px;padding:12px;margin:14px 0;}
.pin-box input:focus{outline:2px solid var(--red);}
.day-panel-list{display:flex;flex-direction:column;gap:10px;margin-top:12px;}
.appt-row{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:10px 12px;display:flex;justify-content:space-between;gap:10px;align-items:flex-start;}
.appt-row .meta{font-size:13px;}
.appt-row .meta .time{font-family:'IBM Plex Mono',monospace;color:var(--red);font-size:13px;margin-right:8px;}
.appt-row .meta .who{font-weight:600;}
.appt-row .meta .svc{color:var(--muted);font-size:12px;margin-top:2px;}
.status-tag{font-family:'IBM Plex Mono',monospace;font-size:9.5px;padding:2px 6px;border-radius:3px;}
.status-tag.status-pending{background:#FBEEDD;color:var(--warn);}
.status-tag.status-confirmed{background:#E4F2E9;color:var(--ok);}
.status-tag.status-refused{background:var(--panel-2);color:var(--muted);}

details.settings{margin-top:22px;border:1px solid var(--line);border-radius:8px;background:var(--white);}
details.settings summary{cursor:pointer;padding:14px 18px;font-family:'IBM Plex Mono',monospace;font-size:14px;font-weight:700;list-style:none;text-transform:uppercase;}
details.settings summary::-webkit-details-marker{display:none;}
details.settings summary::before{content:"> ";color:var(--red);}
.weekday-picker{display:flex;gap:6px;flex-wrap:wrap;}
.weekday-picker label{font-family:'IBM Plex Mono',monospace;font-size:11px;background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:7px 9px;cursor:pointer;color:var(--muted);}
.weekday-picker input{display:none;}
.weekday-picker label:has(input:checked){border-color:var(--red);color:var(--red);}

.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--ink);border:1px solid var(--red);color:var(--white);padding:11px 18px;border-radius:6px;font-size:13px;font-family:'IBM Plex Mono',monospace;z-index:50;box-shadow:0 6px 24px rgba(0,0,0,.25);}
