This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
/* ===== 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;}
|
||||
Reference in New Issue
Block a user