/* ===== Illustrated Algorithm – Shared Styles ===== */ :root { --bg: #0f1117; --surface: #1a1d27; --surface2: #242836; --border: #2e3347; --text: #e4e6f0; --text2: #9499b3; --accent: #6c7eff; --accent2: #5a6adf; --green: #3dd68c; --green-dim: rgba(61,214,140,.15); --red: #f06060; --red-dim: rgba(240,96,96,.15); --orange: #f5a623; --orange-dim: rgba(245,166,35,.15); --blue: #4da6ff; --blue-dim: rgba(77,166,255,.15); --purple: #b47aff; --purple-dim: rgba(180,122,255,.15); --cyan: #22d3ee; --yellow: #facc15; --font: 'Inter','SF Pro Display',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif; --mono: 'JetBrains Mono','Fira Code','SF Mono',Menlo,Consolas,monospace; --radius: 8px; --shadow: 0 2px 12px rgba(0,0,0,.35); } *{margin:0;padding:0;box-sizing:border-box;} html{font-size:15px;-webkit-font-smoothing:antialiased;} body{background:var(--bg);color:var(--text);font-family:var(--font);line-height:1.6;padding:0 0 48px;} .container{max-width:1080px;margin:0 auto;padding:24px 20px;} h1{font-size:1.7rem;font-weight:700;margin-bottom:6px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;} .badge{font-size:.7rem;font-weight:600;padding:2px 10px;border-radius:20px;letter-spacing:.5px;text-transform:uppercase;vertical-align:middle;} .badge.easy{background:var(--green-dim);color:var(--green);} .badge.medium{background:var(--orange-dim);color:var(--orange);} .badge.hard{background:var(--red-dim);color:var(--red);} .subtitle{color:var(--text2);font-size:.85rem;margin-bottom:18px;} /* Controls */ .controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px;background:var(--surface);padding:10px 14px;border-radius:var(--radius);border:1px solid var(--border);} .controls label{font-size:.82rem;color:var(--text2);} .controls input[type=text]{background:var(--surface2);border:1px solid var(--border);color:var(--text);padding:6px 10px;border-radius:6px;font-family:var(--mono);font-size:.82rem;width:180px;} .controls select{background:var(--surface2);border:1px solid var(--border);color:var(--text);padding:5px 8px;border-radius:6px;font-size:.82rem;} .controls button{padding:6px 14px;border:none;border-radius:6px;font-size:.82rem;cursor:pointer;font-weight:600;transition:all .15s;} .controls button.primary{background:var(--accent);color:#fff;} .controls button.primary:hover{background:var(--accent2);} .controls button:not(.primary){background:var(--surface2);color:var(--text);border:1px solid var(--border);} .controls button:not(.primary):hover{background:var(--border);} /* Pipeline */ .pipeline{display:flex;gap:3px;margin-bottom:10px;flex-wrap:wrap;} .pipeline .step-dot{width:28px;height:6px;border-radius:3px;background:var(--surface2);transition:background .2s;} .pipeline .step-dot.done{background:var(--accent);} .pipeline .step-dot.active{background:var(--orange);} /* Hint */ .hint{padding:10px 14px;border-radius:var(--radius);margin-bottom:14px;font-size:.85rem;line-height:1.6;} .hint.info{background:var(--blue-dim);color:var(--blue);border:1px solid rgba(77,166,255,.25);} .hint #stepInfo{font-weight:700;} /* Panels */ .panels{display:grid;grid-template-columns:1fr;gap:14px;margin-bottom:14px;} .panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;} .panel h3{font-size:.9rem;font-weight:700;margin-bottom:10px;color:var(--text2);} .panel-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;} @media(max-width:700px){.panel-grid{grid-template-columns:1fr;}} /* Vis area */ .vis-area{min-height:120px;position:relative;} .vis-area svg{display:block;margin:0 auto;} /* Array rendering */ .arr-row{display:flex;align-items:flex-end;gap:4px;justify-content:center;margin:8px 0;} .arr-cell{display:flex;flex-direction:column;align-items:center;min-width:36px;} .arr-val{font-family:var(--mono);font-size:.82rem;padding:3px 0;color:var(--text);} .arr-bar{width:30px;border-radius:4px 4px 0 0;background:var(--accent);transition:all .25s;} .arr-idx{font-family:var(--mono);font-size:.68rem;color:var(--text2);margin-top:2px;} .arr-bar.min-price{background:var(--green);box-shadow:0 0 8px var(--green);} .arr-bar.current{background:var(--orange);box-shadow:0 0 8px var(--orange);} .arr-bar.checking{background:var(--purple);box-shadow:0 0 6px var(--purple);} .arr-bar.covered{background:var(--blue);opacity:.7;} .arr-bar.best{background:var(--green);box-shadow:0 0 8px var(--green);} .arr-cell .tag{font-size:.6rem;font-weight:700;margin-top:1px;} /* Grid rendering */ .grid-vis{display:inline-grid;gap:3px;margin:8px auto;} .grid-cell{width:48px;height:48px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:.82rem;border-radius:4px;background:var(--surface2);border:1px solid var(--border);transition:all .25s;position:relative;} .grid-cell.highlight{background:var(--accent);color:#fff;border-color:var(--accent);} .grid-cell.path{background:var(--green);color:#fff;border-color:var(--green);box-shadow:0 0 6px var(--green);} .grid-cell.computing{background:var(--orange-dim);border-color:var(--orange);} .grid-cell.origin{background:var(--purple-dim);border-color:var(--purple);} /* String rendering */ .str-row{display:flex;gap:2px;justify-content:center;margin:8px 0;flex-wrap:wrap;} .str-cell{width:32px;height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--mono);font-size:.9rem;border-radius:4px;background:var(--surface2);border:2px solid transparent;transition:all .2s;} .str-cell.center{border-color:var(--orange);background:var(--orange-dim);} .str-cell.expand{border-color:var(--purple);background:var(--purple-dim);} .str-cell.palindrome{background:var(--green-dim);border-color:var(--green);} .str-cell.best{background:var(--green);color:#fff;border-color:var(--green);} .str-cell .str-idx{font-size:.55rem;color:var(--text2);} /* Partition colors */ .part-0{background:var(--accent)!important;border-color:var(--accent)!important;} .part-1{background:var(--green)!important;border-color:var(--green)!important;} .part-2{background:var(--orange)!important;border-color:var(--orange)!important;} .part-3{background:var(--purple)!important;border-color:var(--purple)!important;} .part-4{background:var(--cyan)!important;border-color:var(--cyan)!important;} .part-5{background:var(--yellow)!important;border-color:var(--yellow)!important;color:#222!important;} .part-6{background:var(--red)!important;border-color:var(--red)!important;} .part-7{background:var(--blue)!important;border-color:var(--blue)!important;} /* Jump vis */ .jump-row{display:flex;gap:3px;align-items:center;justify-content:center;margin:8px 0;flex-wrap:wrap;} .jump-cell{display:flex;flex-direction:column;align-items:center;min-width:38px;padding:4px 2px;border-radius:6px;transition:all .2s;} .jump-cell .j-val{font-family:var(--mono);font-size:.9rem;font-weight:600;} .jump-cell .j-idx{font-size:.6rem;color:var(--text2);} .jump-cell.reachable{background:var(--blue-dim);border:1px solid var(--blue);} .jump-cell.current{background:var(--orange-dim);border:2px solid var(--orange);} .jump-cell.max-reach{background:var(--green-dim);border:2px solid var(--green);} .jump-cell.step-start{border-bottom:3px solid var(--orange);} .jump-cell .j-chip{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;background:var(--surface2);border:2px solid var(--border);} /* Code */ .code-section{margin-top:16px;} pre.code-block{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;overflow-x:auto;font-family:var(--mono);font-size:.8rem;line-height:1.7;white-space:pre;color:var(--text2);} pre.code-block .hl{background:var(--orange-dim);display:inline-block;width:calc(100% + 24px);margin:0 -12px;padding:0 12px;border-left:3px solid var(--orange);} pre.code-block .kw{color:var(--purple);} pre.code-block .fn{color:var(--blue);} pre.code-block .str{color:var(--green);} pre.code-block .num{color:var(--orange);} pre.code-block .cmt{color:#555;font-style:italic;} /* Result */ .result-box{background:var(--green-dim);border:1px solid rgba(61,214,140,.3);border-radius:var(--radius);padding:12px 16px;font-size:.9rem;color:var(--green);} .result-box .val{font-size:1.3rem;font-weight:700;} /* Footer */ footer{text-align:center;color:var(--text2);font-size:.72rem;margin-top:32px;opacity:.5;} /* Misc */ .flex-center{display:flex;align-items:center;justify-content:center;} .mt-8{margin-top:8px;} .mb-8{margin-bottom:8px;} .tag-green{color:var(--green);font-weight:700;font-size:.75rem;} .tag-orange{color:var(--orange);font-weight:700;font-size:.75rem;} .tag-red{color:var(--red);font-weight:700;font-size:.75rem;} .tag-blue{color:var(--blue);font-weight:700;font-size:.75rem;} .legend{display:flex;gap:12px;flex-wrap:wrap;margin:8px 0;font-size:.75rem;color:var(--text2);} .legend-item{display:flex;align-items:center;gap:4px;} .legend-dot{width:10px;height:10px;border-radius:3px;}