/* shared.css — 讀書監督系統投影片（深色主題，基於 tutor_python） */

.back-btn{position:fixed;top:12px;left:14px;z-index:1000;background:rgba(15,23,42,.95);border:1px solid #334155;border-radius:6px;padding:.3rem .8rem;font-size:.78rem;color:#94a3b8;text-decoration:none;font-family:-apple-system,'Noto Sans TC',sans-serif;backdrop-filter:blur(6px);transition:color .15s;}
.back-btn:hover{color:#60a5fa;}

.reveal{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Noto Sans TC','PingFang TC','Microsoft JhengHei',sans-serif;}
.reveal h1,.reveal h2,.reveal h3,.reveal h4{color:#e2e8f0;text-transform:none;font-weight:700;}
.reveal h1{font-size:3rem;line-height:1.2;}
.reveal h2{font-size:1.9rem;margin-bottom:.75rem;}
.reveal h3{font-size:1.25rem;margin-bottom:.5rem;}
.reveal section{text-align:left;}
.reveal p{font-size:.95rem;margin:.4rem 0 .7rem;line-height:1.7;}
.reveal ul,.reveal ol{margin-left:1.4rem;font-size:.92rem;}
.reveal li{margin-bottom:.4rem;line-height:1.65;}
.reveal strong{font-weight:700;color:#f1f5f9;}

.reveal code{background:#1e293b;border:1px solid #475569;border-radius:4px;padding:.1em .4em;font-size:.82em;color:#f87171;font-family:'Fira Code','Cascadia Code',Consolas,monospace;}
.reveal pre{background:#0d1117;border-radius:8px;width:100%;margin:.6rem auto;box-shadow:none;}
.reveal pre code{background:none;border:none;color:#e2e8f0;font-size:.82rem;padding:1rem 1.25rem;max-height:330px;overflow-y:auto;line-height:1.6;}

.reveal table{width:100%;font-size:.83rem;border-collapse:collapse;}
.reveal table th{background:#1e293b;padding:.55rem .85rem;border:1px solid #334155;font-weight:600;color:#cbd5e1;}
.reveal table td{padding:.55rem .85rem;border:1px solid #334155;vertical-align:top;color:#e2e8f0;}
.reveal table tr:nth-child(even) td{background:#162032;}

/* Callouts */
.callout{border-left:4px solid;padding:.7rem 1rem;border-radius:0 6px 6px 0;font-size:.85rem;margin:.6rem 0;}
.callout .ct{font-weight:700;font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;margin-bottom:.2rem;}
.callout p{margin:0;font-size:.85rem;}
.callout ul{margin:.25rem 0 0 1.2rem;font-size:.85rem;}
.callout-info{border-color:#3b82f6;background:#172554;}.callout-info .ct{color:#93c5fd;}
.callout-tip{border-color:#22c55e;background:#052e16;}.callout-tip .ct{color:#4ade80;}
.callout-warning{border-color:#f59e0b;background:#1c1200;}.callout-warning .ct{color:#fbbf24;}
.callout-danger{border-color:#ef4444;background:#1c0000;}.callout-danger .ct{color:#f87171;}

/* Slide tag */
.stag{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:#60a5fa;font-weight:700;margin-bottom:.5rem;}

/* Two / Three columns */
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
.two-col .col{background:#1e293b;border:1px solid #334155;border-radius:8px;padding:.85rem 1rem;}
.two-col .col h4{margin:0 0 .4rem;font-size:.83rem;color:#94a3b8;}
.three-col{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.75rem;}
.three-col .col{background:#1e293b;border:1px solid #334155;border-radius:8px;padding:.75rem .9rem;}
.three-col .col h4{margin:0 0 .35rem;font-size:.8rem;color:#94a3b8;}

/* Tabs */
.tab-group{margin:.6rem 0;}
.tab-buttons{display:flex;border-bottom:2px solid #334155;}
.tab-btn{padding:.38rem 1rem;border:none;background:none;cursor:pointer;font-size:.82rem;color:#94a3b8;border-bottom:2px solid transparent;margin-bottom:-2px;transition:.15s;font-family:inherit;}
.tab-btn.active{color:#60a5fa;border-bottom-color:#60a5fa;font-weight:600;}
.tab-content{display:none;padding:.6rem 0 0;}
.tab-content.active{display:block;}

/* Steps */
.steps{counter-reset:s;list-style:none;margin:.5rem 0;padding:0;}
.steps li{counter-increment:s;display:flex;gap:.6rem;align-items:flex-start;margin-bottom:.5rem;font-size:.88rem;}
.steps li::before{content:counter(s);min-width:1.5rem;height:1.5rem;background:#2563eb;color:white;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.7rem;flex-shrink:0;margin-top:.1rem;}

/* Cover */
.cover-num{font-size:.85rem;font-weight:600;color:#60a5fa;margin-bottom:1rem;letter-spacing:.05em;}
.cover-sub{font-size:1.1rem!important;color:#94a3b8!important;margin-top:.75rem!important;}

/* End links */
.end-links{display:flex;gap:1rem;margin-top:1.5rem;}
.end-link{padding:.55rem 1.25rem;border-radius:8px;font-weight:600;font-size:.9rem;text-decoration:none;}
.end-link.primary{background:#2563eb;color:white;}.end-link.primary:hover{background:#1d4ed8;}
.end-link.secondary{border:1px solid #475569;color:#e2e8f0;background:#1e293b;}.end-link.secondary:hover{background:#334155;}

/* Reveal overrides */
.reveal .slides section{padding:2rem 2.5rem;}
.reveal .progress{color:#60a5fa;}
.reveal .controls{color:#60a5fa;}

/* ── Architecture Flow ── */
.arch-flow{display:flex;align-items:center;justify-content:center;gap:.4rem;margin:1rem 0;flex-wrap:wrap;}
.arch-box{padding:.7rem 1rem;border-radius:10px;text-align:center;font-weight:600;font-size:.85rem;line-height:1.4;min-width:120px;}
.arch-box small{font-weight:400;font-size:.72rem;opacity:.85;display:block;margin-top:.15rem;}
.arch-box.blue{background:#1e3a5f;border:2px solid #3b82f6;color:#93c5fd;}
.arch-box.green{background:#052e16;border:2px solid #22c55e;color:#4ade80;}
.arch-box.orange{background:#1c1200;border:2px solid #f59e0b;color:#fbbf24;}
.arch-box.red{background:#1c0000;border:2px solid #ef4444;color:#f87171;}
.arch-arrow{font-size:1.5rem;color:#60a5fa;font-weight:700;}

/* ── Vertical Flow ── */
.flow-vertical{display:flex;flex-direction:column;align-items:center;gap:0;margin:.5rem 0;}
.flow-step{background:#1e293b;border:1px solid #334155;border-radius:8px;padding:.5rem 1.2rem;font-size:.85rem;max-width:90%;text-align:center;}
.flow-down{color:#60a5fa;font-size:1.1rem;line-height:1;}

/* ── Screen Preview (mini TFT mockup) ── */
.screen-preview{background:#000;border:3px solid #475569;border-radius:8px;padding:0;width:220px;margin:.5rem auto 0;overflow:hidden;font-family:'Fira Code',Consolas,monospace;}
.sp-header{padding:.3rem .6rem;font-size:.7rem;font-weight:700;color:white;text-align:center;}
.sp-header.green{background:#03E0;}
.sp-header.orange{background:#c67c00;}
.sp-header.red{background:#b91c1c;}
.sp-time{text-align:center;font-size:1.8rem;font-weight:700;color:#22c55e;padding:.3rem 0 .1rem;}
.sp-text{text-align:center;font-size:.65rem;color:#6b7280;padding:.1rem 0;}
.sp-bar{background:#333;height:10px;margin:.3rem .6rem;border-radius:4px;overflow:hidden;}
.sp-fill{background:linear-gradient(90deg,#f59e0b,#fbbf24);height:100%;border-radius:4px;}
.sp-pct{text-align:right;font-size:.6rem;color:#9ca3af;padding:0 .6rem .4rem;}
.sp-warn{text-align:center;font-size:.85rem;font-weight:700;color:white;padding:.5rem .3rem .2rem;line-height:1.5;}
.sp-total{text-align:center;font-size:.7rem;color:#fbbf24;padding:.3rem 0 .5rem;border-top:1px solid rgba(255,255,255,.15);margin:0 .5rem;}

.green-theme{border-color:#22c55e;}
.orange-theme{border-color:#f59e0b;}
.orange-theme .sp-warn{background:#7c2d12;}
.red-theme{border-color:#ef4444;}
.red-theme .sp-warn{background:#7f1d1d;}
