:root{
  --ink:#12151C; --paper:#F6F7F5; --panel:#FFFFFF; --line:#E1E4DF;
  --accent:#12805C; --accent-soft:#E4F2EB; --live:#C7511F; --muted:#5B6169;
}
*{box-sizing:border-box;}
body{background:var(--paper);color:var(--ink);font-family:'Inter',system-ui,sans-serif;-webkit-font-smoothing:antialiased;}
h1,h2,h3{font-family:'Space Grotesk',sans-serif;letter-spacing:-0.01em;}
.mono{font-family:'IBM Plex Mono',monospace;}

/* ticker */
.ticker{background:var(--ink);color:#EDEFEA;font-family:'IBM Plex Mono',monospace;font-size:0.78rem;padding:7px 0;}
.ticker .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);margin-right:8px;animation:pulse 2s infinite;}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:0.35;}}
.ticker .sep{color:#565C57;margin:0 14px;}

/* nav */
.navbar{border-bottom:1px solid var(--line);background:var(--panel);}
.navbar-brand{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:1.25rem;color:var(--ink)!important;}
.navbar-brand span{color:var(--accent);}
.header-search-wrap{position:relative;width:260px;max-width:45vw;}
#header-tool-search{font-size:0.85rem;padding:6px 10px;}
#header-search-results{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-md,0 6px 16px rgba(0,0,0,0.08));max-height:320px;overflow-y:auto;z-index:50;display:none;}
#header-search-results.show{display:block;}
.header-search-item{display:block;padding:8px 12px;text-decoration:none;color:var(--ink);border-bottom:1px solid var(--line);}
.header-search-item:last-child{border-bottom:none;}
.header-search-item:hover,.header-search-item.active{background:var(--accent-soft);}
.header-search-item .hs-name{font-weight:600;font-size:0.85rem;}
.header-search-item .hs-cat{font-family:'IBM Plex Mono',monospace;font-size:0.68rem;color:var(--muted);text-transform:uppercase;}
@media (max-width:576px){.header-search-wrap{width:180px;}}

/* hero */
.hero{padding:64px 0 44px;border-bottom:1px solid var(--line);}
.hero h1{font-size:2.6rem;font-weight:700;max-width:680px;line-height:1.15;}
.hero p.lead{color:var(--muted);max-width:560px;font-size:1.05rem;}
.trust-strip{font-family:'IBM Plex Mono',monospace;font-size:0.78rem;color:var(--muted);margin-top:22px;}
.trust-strip span{margin-right:20px;}
.trust-strip span::before{content:"✓ ";color:var(--accent);font-weight:700;}
.search-box{max-width:560px;margin-top:28px;}
.search-box input{border:1.5px solid var(--line);border-radius:8px;padding:13px 16px;font-size:0.95rem;}
.search-box input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);}

/* category rail */
.cat-rail{padding:22px 0;border-bottom:1px solid var(--line);}
.cat-chip{
  font-family:'IBM Plex Mono',monospace;font-size:0.76rem;font-weight:500;
  padding:7px 13px;border:1px solid var(--line);border-radius:6px;
  background:var(--panel);color:var(--ink);margin-right:8px;margin-bottom:8px;
  display:inline-block;cursor:pointer;transition:all .15s;
}
.cat-chip.active,.cat-chip:hover{background:var(--ink);color:#fff;border-color:var(--ink);}

/* tool grid */
.tools-section{padding:40px 0 70px;}
.personal-section{padding:28px 0 8px;}
.personal-section .tool-card{padding:14px 16px;}
.personal-section .tool-card h3{margin-bottom:0;font-size:0.95rem;}
.personal-section .badge-cat{margin-bottom:8px;}
.section-label{font-family:'IBM Plex Mono',monospace;font-size:0.76rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:18px;text-decoration:none;}
.section-label:hover{color:var(--accent);text-decoration:underline;}
.section-label-row{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:18px;}
.section-label-row .section-label{margin-bottom:0;}
.see-all-link{font-family:'IBM Plex Mono',monospace;font-size:0.8rem;color:var(--accent);text-decoration:none;white-space:nowrap;}
.see-all-link:hover{text-decoration:underline;}
.tool-card{
  background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:18px;height:100%;
  text-decoration:none;color:var(--ink);display:flex;flex-direction:column;transition:border-color .15s, transform .15s;
}
.tool-card:hover{border-color:var(--accent);transform:translateY(-2px);color:var(--ink);}
.badge-cat{
  font-family:'IBM Plex Mono',monospace;font-size:0.66rem;font-weight:600;color:var(--accent);background:var(--accent-soft);
  padding:3px 8px;border-radius:4px;display:inline-block;margin-bottom:10px;width:fit-content;letter-spacing:.04em;
}
.tool-card h3{font-size:1.02rem;font-weight:600;margin-bottom:6px;font-family:'Space Grotesk',sans-serif;}
.tool-card p{font-size:0.85rem;color:var(--muted);margin-bottom:0;}

/* tool page */
.breadcrumb-row{padding:16px 0;font-size:0.84rem;color:var(--muted);}
.breadcrumb-row a{color:var(--muted);text-decoration:none;}
.breadcrumb-row a:hover{color:var(--accent);}
.tool-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;padding:6px 0 24px;}
.tool-header-text{flex:1;min-width:0;}
.tool-header h1{font-size:2rem;font-weight:700;margin-top:12px;}
.tool-header p{color:var(--muted);max-width:600px;}

#tool-widget{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:24px;margin-bottom:16px;}

.privacy-notice{
  background:var(--accent-soft);border:1px solid var(--accent);border-radius:10px;
  padding:14px 18px;margin-bottom:20px;
}
.privacy-notice-summary{
  display:flex;gap:12px;align-items:center;cursor:pointer;list-style:none;
}
.privacy-notice-summary::-webkit-details-marker{display:none;}
.privacy-notice-summary::after{
  content:'\25B8';margin-left:auto;color:var(--muted);font-size:0.8rem;transition:transform 0.15s ease;
}
.privacy-notice[open] .privacy-notice-summary::after{transform:rotate(90deg);}
.privacy-notice-icon{font-size:1.2rem;line-height:1;}
.privacy-notice-headline{font-weight:600;font-size:0.95rem;color:var(--ink);}
.privacy-notice-content{padding:10px 0 0 32px;}
.privacy-notice-body{font-size:0.85rem;color:var(--ink);margin-bottom:8px;line-height:1.6;}
.privacy-notice-footnote{font-size:0.78rem;color:var(--muted);margin-bottom:0;}
.privacy-notice-footnote a{color:var(--accent);}
.tool-textarea{border-color:var(--line);}
.tool-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);}
.tool-error{color:var(--live);font-size:0.85rem;font-family:'IBM Plex Mono',monospace;min-height:1.2em;}
.tool-result{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:12px 14px;font-size:0.9rem;word-break:break-word;}
.tool-label{font-family:'IBM Plex Mono',monospace;font-size:0.72rem;color:var(--muted);letter-spacing:.05em;display:block;margin-bottom:5px;}
.tool-pre{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:12px;font-family:'IBM Plex Mono',monospace;font-size:0.82rem;white-space:pre-wrap;word-break:break-word;min-height:60px;margin-bottom:0;}
.tool-hint{font-size:0.8rem;color:var(--muted);}
.fraction-block{display:flex;flex-direction:column;align-items:center;gap:6px;}
.fraction-input{width:74px;text-align:center;font-family:'IBM Plex Mono',monospace;font-size:1.1rem;padding:6px 4px;}
.fraction-bar{width:74px;height:2px;background:var(--ink);}
.fraction-op-select{width:auto;min-width:70px;font-size:1.4rem;text-align:center;padding:6px 8px;}
.quad-term{display:flex;align-items:center;gap:6px;}
.quad-input{width:70px;text-align:center;font-family:'IBM Plex Mono',monospace;font-size:1.1rem;padding:6px 4px;}
.quad-label{font-family:'IBM Plex Mono',monospace;font-size:1.2rem;color:var(--ink);}
.quad-op{font-size:1.2rem;color:var(--muted);}
.auto-computed-field{border-color:var(--accent)!important;background:var(--accent-soft)!important;}
.auto-computed-label{color:var(--accent);font-size:0.7rem;font-weight:600;margin-left:6px;}
@keyframes fieldPop{0%{transform:scale(1);}40%{transform:scale(1.06);}100%{transform:scale(1);}}
.field-pop{animation:fieldPop 0.35s ease;}
.tool-preview{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:16px;}
.tool-diff-output{font-family:'IBM Plex Mono',monospace;font-size:0.85rem;border:1px solid var(--line);border-radius:8px;overflow:hidden;}
.diff-line{padding:2px 12px;white-space:pre-wrap;word-break:break-word;}
.diff-add{background:#E4F2EB;color:#0F5C3F;}
.diff-remove{background:#FCEBE6;color:#9A3412;}
.tool-laps{font-family:'IBM Plex Mono',monospace;font-size:0.85rem;padding-left:20px;}
.hash-btn.active{background:var(--accent);border-color:var(--accent);}

.stat-box{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:14px 8px;}
.stat-num{font-family:'IBM Plex Mono',monospace;font-weight:700;font-size:1.5rem;color:var(--accent);}
.stat-lbl{font-family:'IBM Plex Mono',monospace;font-size:0.65rem;color:var(--muted);letter-spacing:.05em;margin-top:2px;}

/* countdown / timer / stopwatch */
.preset-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px;}
.preset-btn{
  font-family:'IBM Plex Mono',monospace;font-size:0.78rem;font-weight:500;border:1px solid var(--line);
  background:var(--panel);color:var(--ink);padding:8px 13px;border-radius:6px;cursor:pointer;transition:all .15s;
}
.preset-btn:hover,.preset-btn.active{background:var(--ink);color:#fff;border-color:var(--ink);}
.countdown-panel{background:var(--ink);border-radius:14px;padding:40px 24px;text-align:center;}
.countdown-target{font-family:'IBM Plex Mono',monospace;color:#9CA3AC;font-size:0.85rem;margin-bottom:18px;letter-spacing:.03em;}
.countdown-target.date-focused{color:var(--accent);font-size:1.5rem;font-weight:700;margin-bottom:10px;letter-spacing:normal;}
.countdown-digits{display:flex;justify-content:center;gap:22px;flex-wrap:wrap;}
.digit-block{min-width:70px;}
.digit-block .num{font-family:'IBM Plex Mono',monospace;font-weight:700;font-size:2.6rem;color:#fff;line-height:1;}
.digit-block .lbl{font-family:'IBM Plex Mono',monospace;font-size:0.68rem;color:var(--accent);letter-spacing:.08em;margin-top:6px;}
.custom-picker{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:18px;}

/* color/css tools */
.gradient-preview{height:140px;border-radius:10px;border:1px solid var(--line);}
.shadow-preview-wrap{background:var(--paper);border-radius:10px;padding:40px;display:flex;justify-content:center;}
.shadow-preview-box{width:120px;height:120px;background:#fff;border-radius:10px;}
.palette-output{display:flex;flex-wrap:wrap;gap:10px;}
.swatch{width:100px;height:90px;border-radius:8px;display:flex;align-items:flex-end;padding:6px;cursor:pointer;border:1px solid var(--line);}
.swatch span{font-family:'IBM Plex Mono',monospace;font-size:0.68rem;background:rgba(255,255,255,.85);padding:2px 5px;border-radius:3px;}

section.explain{padding:10px 0 30px;border-top:1px solid var(--line);margin-top:10px;}
section.explain h2{font-size:1.3rem;margin-bottom:14px;}
section.explain p{color:var(--ink);font-size:0.96rem;line-height:1.7;max-width:760px;}
.faq-item{border-bottom:1px solid var(--line);padding:16px 0;}
.faq-item h3{font-size:0.98rem;font-weight:600;margin-bottom:6px;}
.faq-item p{font-size:0.9rem;color:var(--muted);margin-bottom:0;}
.scenario-links{display:flex;flex-wrap:wrap;gap:8px;}
.scenario-links a{font-family:'IBM Plex Mono',monospace;font-size:0.78rem;color:var(--accent);background:var(--accent-soft);padding:6px 11px;border-radius:6px;text-decoration:none;}
.scenario-links a:hover{background:var(--accent);color:#fff;}
.related-card{border:1px solid var(--line);border-radius:8px;padding:14px;background:var(--panel);text-decoration:none;color:var(--ink);display:block;height:100%;}
.related-card:hover{border-color:var(--accent);color:var(--ink);}
.related-card h4{font-size:0.9rem;font-weight:600;margin-bottom:3px;font-family:'Space Grotesk',sans-serif;}
.related-card p{font-size:0.8rem;color:var(--muted);margin:0;}

footer{border-top:1px solid var(--line);padding:30px 0;font-size:0.85rem;color:var(--muted);margin-top:40px;}

/* Print output for invoice/quotation/receipt/salary-slip tools.
   .print-only content is hidden on screen and shown only when printing;
   .no-print elements (buttons, nav) hide when printing so only the document shows. */
.print-only{display:none;}
@media print{
  .ticker,.navbar,.breadcrumb-row,.tool-header,footer,.no-print,section.explain,.ad-slot,.privacy-notice{display:none!important;}
  body{background:#fff;}
  .print-only{display:block!important;}
  #tool-widget{border:none;box-shadow:none;padding:0;}
}
.doc-preview{background:#fff;border:1px solid var(--line);border-radius:8px;padding:24px;font-size:0.9rem;}
.doc-preview table{width:100%;border-collapse:collapse;margin:12px 0;}
.doc-preview th,.doc-preview td{border:1px solid var(--line);padding:8px;text-align:left;font-size:0.85rem;}
.doc-preview .doc-total-row td{font-weight:700;}

.tg-grid{display:flex;flex-wrap:wrap;gap:16px;}
.tg-ticket{background:#fff;border:1px solid var(--line);border-radius:6px;padding:8px;width:300px;}
.tg-share-btn{margin-top:8px;width:100%;}
.tg-ticket-label{font-size:0.75rem;font-weight:600;color:var(--muted);margin-bottom:4px;}
.tg-ticket-table{width:100%;border-collapse:collapse;table-layout:fixed;}
.tg-ticket-table td{border:1px solid var(--line);text-align:center;font-family:'IBM Plex Mono',monospace;font-size:0.8rem;height:26px;width:11.1%;}

@media print{
  @page{size:portrait;margin:8mm;}
  .tg-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;}
  .tg-ticket{width:auto;border:none;page-break-inside:avoid;padding:3mm;}
  .tg-ticket.tg-col-left{border-right:1px dashed #000;}
  .tg-ticket.tg-row-notlast{border-bottom:1px dashed #000;}
  .tg-ticket-table td{border:1px solid #000;font-size:9pt;height:7.5mm;}
  .tg-ticket-label{font-size:7pt;}
}

.tc-current-wrap{text-align:center;padding:12px 0;}
.tc-current-num{font-size:4rem;font-weight:700;color:var(--accent);line-height:1;}
.tc-callout{font-size:1.1rem;min-height:1.6rem;margin-top:8px;}
.tc-last5{font-size:1.3rem;}
@media (max-width:520px){
  .tc-current-wrap{padding:6px 0;}
  .tc-current-num{font-size:2.6rem;}
  .tc-callout{font-size:0.9rem;min-height:1.3rem;margin-top:4px;}
  .tc-last5{font-size:1rem;}
}
.tc-board-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:4px;margin-top:4px;}
.tc-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;background:#F4F5F6;border:1px solid var(--line);border-radius:4px;font-family:'IBM Plex Mono',monospace;font-size:0.8rem;color:var(--muted);}
.tc-cell.tc-drawn{background:var(--accent);color:#fff;font-weight:700;border-color:var(--accent);}
@media (max-width:520px){
  .tc-board-grid{gap:2px;}
  .tc-cell{font-size:0.62rem;border-radius:3px;}
}
/* Mobile/portrait: board and the current-draw info stack vertically, which
   already reads well since there's not enough width for both side by side.
   Laptop/landscape and up: put the fixed-size 90-cell board on the left and
   the constantly-changing "what's happening now" info in a sidebar on the
   right, so drawing numbers never requires scrolling away from the board —
   the two panels' natural sizes (board wide and squarish, info column
   narrow and tall) fit a side-by-side layout well at this width. */
.tc-layout{display:flex;flex-direction:column;gap:20px;}
.tc-board-col{width:100%;}
.tc-info-col{width:100%;}
@media (min-width:900px){
  .tc-layout{flex-direction:row;align-items:center;gap:32px;}
  .tc-board-col{flex:1 1 auto;min-width:0;}
  .tc-info-col{flex:0 0 280px;}
}


/* ad slots: only rendered server-side when an AdSense client+slot ID is configured,
   so this box never shows on a page where ads aren't set up. */
.ad-slot{margin:20px 0;min-height:0;}

/* Open Graph preview card */
.og-card{border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--panel);}
.og-card-image{height:160px;background:var(--paper) center/cover no-repeat;display:flex;align-items:center;justify-content:center;color:var(--muted);font-family:'IBM Plex Mono',monospace;font-size:0.75rem;}
.og-card-body{padding:12px 14px;}
.og-card-domain{font-family:'IBM Plex Mono',monospace;font-size:0.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;}
.og-card-title{font-weight:600;font-size:0.92rem;margin:4px 0 2px;font-family:'Space Grotesk',sans-serif;}
.og-card-desc{font-size:0.82rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}

/* Tournament Bracket Builder — responsive table: normal bordered table on
   wide screens; below 640px, each row becomes its own labeled block instead
   of squeezing columns or forcing horizontal scroll, using the data-label
   attribute each <td> carries. */
.bb-table-wrap{overflow-x:auto;margin-bottom:20px;}
.bb-table{width:100%;border-collapse:collapse;}
.bb-table th,.bb-table td{border:1px solid var(--line);padding:8px 10px;text-align:left;font-size:0.88rem;}
.bb-table thead th{background:var(--accent-soft);font-weight:600;}
.bb-table tbody tr:nth-child(even){background:#FAFAFA;}
@media (max-width:640px){
  .bb-table-wrap{overflow-x:visible;}
  .bb-table thead{display:none;}
  .bb-table,.bb-table tbody,.bb-table tr,.bb-table td{display:block;width:100%;}
  .bb-table tr{border:1px solid var(--line);border-radius:6px;margin-bottom:10px;padding:4px 0;}
  .bb-table td{border:none;padding:4px 10px;}
  .bb-table td::before{content:attr(data-label);font-weight:600;display:inline-block;min-width:80px;color:var(--muted);margin-right:6px;}
}

/* Certificate Maker */
.cm-certificate{background:#fff;padding:20px;}
.cm-border{border:6px double var(--accent);border-radius:4px;padding:40px 30px;text-align:center;font-family:'Space Grotesk',sans-serif;}
.cm-letterhead{display:flex;align-items:center;gap:12px;margin-bottom:20px;}
.cm-letterhead-left{justify-content:flex-start;}
.cm-letterhead-center{justify-content:center;}
.cm-letterhead-right{justify-content:flex-end;}
.cm-logo-img{max-height:60px;max-width:180px;object-fit:contain;}
.cm-institute-name{font-weight:600;font-size:1.05rem;color:var(--ink);}
.cm-title{font-size:1.8rem;font-weight:700;color:var(--ink);margin-bottom:16px;}
.cm-subtitle{font-size:0.95rem;color:var(--muted);margin-bottom:8px;}
.cm-name{font-size:2.2rem;font-weight:700;color:var(--accent);margin-bottom:16px;font-family:'IBM Plex Mono',monospace;}
.cm-text{font-size:1rem;color:var(--ink);margin-bottom:24px;max-width:520px;margin-left:auto;margin-right:auto;}
.cm-footer{display:flex;justify-content:space-around;font-size:0.85rem;color:var(--muted);border-top:1px solid var(--line);padding-top:16px;}
@media print{
  @page{size:landscape;margin:8mm;}
  /* Sized to comfortably fit a single A5 landscape page (210mm x 148mm) as
     the binding constraint — A5 landscape's printable height, after an 8mm
     margin on top and bottom, is 132mm. The fixed height here (115mm)
     leaves real safety margin below that, since actual browser/printer
     margin handling varies and this can't be visually verified without a
     real print test. A4 landscape (297mm x 210mm) has much more vertical
     room, so anything that fits A5 fits A4 automatically. overflow:hidden
     is a hard backstop against any edge case (an unusually long institute
     name or achievement line) still pushing a second page rather than
     silently overflowing onto one.  */
  .cm-certificate{padding:0;}
  .cm-border{
    border-width:4px;padding:10mm 16mm;
    height:115mm;max-height:115mm;overflow:hidden;box-sizing:border-box;
    display:flex;flex-direction:column;justify-content:center;
  }
  .cm-letterhead{margin-bottom:8mm;}
  .cm-logo-img{max-height:14mm;max-width:45mm;}
  .cm-institute-name{font-size:0.95rem;}
  .cm-title{font-size:1.5rem;margin-bottom:6mm;}
  .cm-subtitle{font-size:0.8rem;margin-bottom:3mm;}
  .cm-name{font-size:1.7rem;margin-bottom:6mm;}
  .cm-text{font-size:0.85rem;margin-bottom:8mm;}
  .cm-footer{font-size:0.72rem;padding-top:5mm;}
}

/* CSV SQL Query Tool */
.cq-table-card{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:10px 12px;margin-bottom:8px;}
.cq-table-name{font-family:'IBM Plex Mono',monospace;font-weight:600;margin-bottom:2px;}
.cq-results-wrap{min-height:60px;}
.cq-table-scroll{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;}
.cq-results-table{border-collapse:collapse;white-space:nowrap;font-size:0.85rem;}
.cq-results-table th,.cq-results-table td{border:1px solid var(--line);padding:6px 10px;text-align:left;}
.cq-results-table thead th{background:var(--accent-soft);position:sticky;top:0;}
@media (max-width:520px){
  .cq-results-table{font-size:0.78rem;}
  .cq-results-table th,.cq-results-table td{padding:5px 8px;}
}

/* CSV Diff Tool */
.cd-cell-changed{background:#FFF3CD;font-weight:600;}

/* Mock / Test Data Generator */
.md-column-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px;padding:8px;background:var(--panel);border:1px solid var(--line);border-radius:6px;}

/* Barcode Generator — grid sized to the verified 63.5mm x 38.1mm, 21-per-A4
   label layout (3 columns x 7 rows), centered with symmetric margins. */
.bg-sheet-page{margin-bottom:24px;}
.bg-label-grid{display:grid;grid-template-columns:repeat(3,63.5mm);grid-template-rows:repeat(7,38.1mm);border:1px dashed var(--line);width:max-content;margin:0 auto;}
.bg-label-cell{display:flex;align-items:center;justify-content:center;padding:2mm;box-sizing:border-box;overflow:hidden;border:1px dashed var(--line);}
.bg-label-svg{max-width:100%;max-height:100%;}
@media print{
  @page{size:portrait;margin:15.15mm 9.75mm;}
  .bg-label-grid{border:none;}
  .bg-label-cell{border:none;}
  .bg-sheet-page{page-break-after:always;margin-bottom:0;}
  .bg-sheet-page:last-child{page-break-after:auto;}
}

/* Homepage category rows — horizontally scrollable rather than a fixed
   grid, so all items stay in the DOM (fully crawlable) while presenting
   as a swipeable strip. A traditional next/prev-arrow carousel was
   deliberately avoided: those have well-documented low interaction rates
   and can hide content from crawlers if items aren't rendered until a
   click — this keeps every card server-rendered and just changes how
   it's browsed. */
.cat-scroll-row{
  display:flex;gap:14px;overflow-x:auto;padding-bottom:10px;
  scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
.cat-scroll-row .tool-card-wrap{
  flex:0 0 auto;width:230px;scroll-snap-align:start;
}
@media (max-width:520px){
  .cat-scroll-row .tool-card-wrap{width:78vw;}
}

/* Focus Mode — header/footer-free tool view (?focus=1) */
.focus-mode{padding-top:20px;padding-bottom:40px;max-width:720px;}
.focus-topbar{margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--line);}
/* .focus-title is now a real <h1>, so it inherits the exact same
   h1,h2,h3{font-family:'Space Grotesk'} rule the main site's own tool-name
   heading uses — matched at the tag+global-rule level, not by independently
   duplicating a font-family value that could drift out of sync. */
.focus-title{font-size:1.3rem;margin:0;color:var(--ink);}

/* Copy-link / open-popup / fullscreen icon buttons, positioned as an
   overlay in the corner of the tool card itself (matching e309 Calculators'
   pattern) rather than in the page header — adapted to this site's actual
   design tokens (var(--panel)/var(--line)/var(--accent), not the reference's
   own --surface/--border/--accent-light names, which don't exist here).
   #tool-widget carries the extra top padding so the overlay never covers a
   tool's own first input, regardless of that tool's internal markup —
   safer across 100+ tools with widely varying internal structure than
   targeting each one's first child the way a single-form calculator can. */
#tool-widget{position:relative;padding-top:64px;}
#tool-widget.drag-active{outline:2px dashed var(--accent);outline-offset:-2px;background:var(--accent-soft);}
@media print{ #tool-widget{padding-top:24px;} }
.card-icon-bar{position:absolute;top:12px;right:12px;display:flex;align-items:center;gap:10px;z-index:2;}
.icon-action-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--muted);cursor:pointer;padding:0;transition:color .15s ease,border-color .15s ease;}
.icon-action-btn:hover{color:var(--accent);border-color:var(--accent);}
.copy-link-status{position:absolute;top:100%;right:0;margin-top:4px;font-size:12px;font-weight:600;color:var(--accent);background:var(--panel);padding:2px 8px;border-radius:6px;border:1px solid var(--line);opacity:0;transition:opacity .2s ease;pointer-events:none;white-space:nowrap;}
.copy-link-status.visible{opacity:1;}

.focus-bottombar{margin-top:32px;padding-top:16px;border-top:1px solid var(--line);text-align:center;}
.embed-back-link{display:inline-block;padding:8px 20px;border:1px solid var(--line);border-radius:8px;color:var(--accent);font-size:0.85rem;font-weight:600;text-decoration:none;}
.embed-back-link:hover{background:var(--accent-soft);}
