/* Copyright © Albert Lane. All Rights Reserved.
   Proprietary and Confidential — Albert Lane Proprietary Software License.
   Unauthorized use, copying, modification, or distribution is prohibited.
   License inquiries: https://albertlane.net */
:root{--bg:#040914;--bg2:#0a1428;--panel:rgba(8,18,38,.92);--line:#00e5ff;--line2:rgba(0,229,255,.28);--acc:#ffb000;--txt:#d8f6ff;--mut:#7fa6b8;--ok:#34f5a0;--bad:#ff4d6d;--title:linear-gradient(90deg,rgba(0,229,255,.18),rgba(255,176,0,.10));--font:ui-monospace,"JetBrains Mono","SFMono-Regular",Menlo,Consolas,monospace;--fs:14px;--top:44px;--bar:52px}
body.theme-matrix{--line:#39ff88;--line2:rgba(57,255,136,.28);--acc:#c6ff00;--txt:#d9ffe6;--mut:#7fb894;--title:linear-gradient(90deg,rgba(57,255,136,.18),rgba(198,255,0,.08))}
body.theme-ember{--line:#ff7a1a;--line2:rgba(255,122,26,.3);--acc:#ffd166;--txt:#fff1e0;--mut:#c49a7a;--bg:#120604;--bg2:#1f0c06;--panel:rgba(30,12,6,.93);--title:linear-gradient(90deg,rgba(255,122,26,.22),rgba(255,209,102,.08))}
body.theme-day{--bg:#e9f1f7;--bg2:#d6e3ee;--panel:rgba(255,255,255,.96);--line:#0069c2;--line2:rgba(0,105,194,.25);--acc:#b35900;--txt:#0b1b2b;--mut:#4b6275;--title:linear-gradient(90deg,rgba(0,105,194,.12),rgba(179,89,0,.06))}
body.theme-contrast{--bg:#000;--bg2:#000;--panel:#000;--line:#fff;--line2:#fff;--acc:#ff0;--txt:#fff;--mut:#ddd;--title:#111}
*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--txt);font:var(--fs)/1.45 var(--font);-webkit-text-size-adjust:100%}
a{color:var(--line)}button,input,textarea,select{font:inherit;color:inherit}
button{background:rgba(0,0,0,.25);border:1px solid var(--line2);border-radius:8px;padding:7px 11px;cursor:pointer;min-height:36px}
button:hover,button:focus-visible{border-color:var(--line);box-shadow:0 0 10px var(--line2);outline:none}
button.pri{background:var(--line);color:var(--bg);font-weight:700}
input,textarea,select{background:rgba(0,0,0,.35);border:1px solid var(--line2);border-radius:8px;padding:8px;width:100%}
#bg{position:fixed;inset:0;background:radial-gradient(1200px 600px at 70% -10%,var(--line2),transparent 60%),radial-gradient(900px 500px at -10% 110%,rgba(255,176,0,.10),transparent 60%),repeating-linear-gradient(0deg,transparent 0 3px,rgba(255,255,255,.025) 3px 4px),linear-gradient(var(--bg),var(--bg2));z-index:0}
body:not(.calm) #bg::after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 0,var(--line2) 50%,transparent 100%);height:120px;opacity:.12;animation:scan 9s linear infinite}
@keyframes scan{from{transform:translateY(-130px)}to{transform:translateY(110vh)}}
#topbar{position:fixed;top:0;left:0;right:0;height:var(--top);padding:0 10px;padding-top:env(safe-area-inset-top);display:flex;align-items:center;gap:8px;background:var(--panel);border-bottom:1px solid var(--line2);z-index:5000;white-space:nowrap;overflow:hidden}
#logo{font-weight:800;font-size:18px;letter-spacing:2px;color:var(--acc);border:none;background:none;padding:0 4px;text-shadow:0 0 12px rgba(255,176,0,.5)}#logo span{color:var(--line)}
#phase{font-size:11px;color:var(--line);border:1px solid var(--line2);border-radius:5px;padding:2px 6px}
.pill{font-size:11px;border:1px solid var(--line2);border-radius:20px;padding:3px 9px;color:var(--mut)}.pill.ok{color:var(--ok);border-color:var(--ok)}.pill.bad{color:var(--bad);border-color:var(--bad)}.pill.own{color:var(--acc);border-color:var(--acc)}
#clock{margin-left:auto;color:var(--acc);font-size:12px}
#desk{position:fixed;top:var(--top);left:0;right:0;bottom:var(--bar);z-index:1}
#icons{display:grid;grid-template-columns:repeat(auto-fill,92px);grid-auto-rows:96px;gap:6px;padding:14px;align-content:start;height:100%;overflow:auto}
.ico{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:6px;border:1px solid transparent;border-radius:12px;background:none;padding:8px 4px;text-align:center;font-size:11.5px;color:var(--txt);min-height:0}
.ico:hover,.ico:focus-visible{border-color:var(--line2);background:rgba(0,229,255,.06)}
.ico i{font-style:normal;font-size:26px;width:50px;height:50px;display:grid;place-items:center;border-radius:14px;border:1px solid var(--line2);background:rgba(0,0,0,.35);box-shadow:inset 0 0 14px var(--line2)}
.ico span{line-height:1.2;max-width:88px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
#taskbar{position:fixed;left:0;right:0;bottom:0;height:var(--bar);padding:6px 8px;padding-bottom:calc(6px + env(safe-area-inset-bottom));display:flex;gap:6px;align-items:center;background:var(--panel);border-top:1px solid var(--line2);z-index:5000}
#startbtn{background:linear-gradient(90deg,var(--acc),#ff7a00);color:#111;font-weight:800;border:none;border-radius:20px;padding:0 16px}
#switchbtn{display:none}
#tasks{display:flex;gap:6px;overflow-x:auto;flex:1;scrollbar-width:none}
.task{max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}.task.on{border-color:var(--line);color:var(--line)}.task.min{opacity:.55}
#tray{font-size:11px;color:var(--mut)}
#start{position:fixed;left:8px;bottom:calc(var(--bar) + 8px);width:min(380px,calc(100vw - 16px));max-height:min(560px,calc(100vh - var(--bar) - var(--top) - 20px));display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 0 30px var(--line2);z-index:6000}
#start[hidden],#switcher[hidden]{display:none}
#startlist{overflow:auto;display:flex;flex-direction:column;gap:2px}
.srow{display:flex;gap:10px;align-items:center;text-align:left;border:1px solid transparent;background:none;padding:8px}.srow:hover,.srow:focus-visible{border-color:var(--line2)}.srow i{font-style:normal;width:24px;text-align:center}.srow small{color:var(--mut);display:block;font-size:11px}
#startfoot{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px}
#switcher{position:fixed;inset:var(--top) 0 var(--bar) 0;background:rgba(0,0,0,.6);backdrop-filter:blur(6px);z-index:5500;padding:14px;display:flex;flex-direction:column;gap:8px;overflow:auto}
#switcher button{text-align:left;padding:14px}
.win{position:absolute;display:flex;flex-direction:column;min-width:260px;min-height:160px;background:var(--panel);border:1px solid var(--line2);border-radius:12px;box-shadow:0 10px 40px rgba(0,0,0,.55);overflow:hidden;z-index:10}
.win.focus{border-color:var(--line);box-shadow:0 0 0 1px var(--line2),0 0 26px var(--line2),0 12px 40px rgba(0,0,0,.6)}
.win.max{left:0!important;top:0!important;width:100%!important;height:100%!important;border-radius:0}
.win.hide{display:none}
.wt{display:flex;align-items:center;gap:8px;padding:6px 8px 6px 12px;background:var(--title);border-bottom:1px solid var(--line2);cursor:grab;user-select:none;touch-action:none;min-height:40px}
.wt b{flex:1;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--txt)}.wt i{font-style:normal}
.wt button{min-height:28px;min-width:30px;padding:2px 6px;font-size:12px}
.wb{flex:1;overflow:auto;padding:12px;position:relative}.wb.flush{padding:0}
.rz{position:absolute;right:0;bottom:0;width:22px;height:22px;cursor:nwse-resize;touch-action:none;background:linear-gradient(135deg,transparent 50%,var(--line2) 50%)}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.muted{color:var(--mut)}.ok{color:var(--ok)}.bad{color:var(--bad)}.acc{color:var(--acc)}
.card{border:1px solid var(--line2);border-radius:10px;padding:10px;margin:0 0 10px;background:rgba(0,0,0,.2)}
.grid2{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}
.flist{display:flex;flex-direction:column;gap:2px;margin-top:8px}.fitem{display:flex;gap:10px;align-items:center;justify-content:space-between;text-align:left;border:1px solid transparent;background:none;padding:8px;width:100%}.fitem:hover{border-color:var(--line2)}.fitem span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.fitem small{color:var(--mut);white-space:nowrap}
.crumbs{font-size:12px;color:var(--mut);word-break:break-all}
textarea.code{height:100%;min-height:200px;resize:none;border:none;border-radius:0;background:rgba(0,0,0,.35);white-space:pre;tab-size:2;font-size:13px}
.term{height:100%;display:flex;flex-direction:column;background:rgba(0,0,0,.5)}.term pre{flex:1;margin:0;padding:10px;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:12.5px}
.term form{display:flex;border-top:1px solid var(--line2)}.term form span{padding:8px;color:var(--acc)}.term input{border:none;border-radius:0;background:none}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:12.5px}.kv b{color:var(--mut);font-weight:400}
.calc{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.calc output{grid-column:1/-1;text-align:right;font-size:28px;padding:10px;border:1px solid var(--line2);border-radius:8px;min-height:56px;overflow:hidden}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--bar) + 14px);background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 14px;z-index:9000;max-width:90vw}
@media (max-width:720px){
  :root{--fs:15px}
  #phase,#tray{display:none}#sys{display:none}
  #icons{grid-template-columns:repeat(4,1fr);grid-auto-rows:92px;gap:4px;padding:12px 8px}
  .ico i{width:56px;height:56px;font-size:28px;border-radius:16px}
  .win{left:0!important;top:0!important;width:100%!important;height:100%!important;border-radius:0;min-width:0}
  .wt{cursor:default}.wt .bmax,.rz{display:none}
  .wt button{min-height:36px;min-width:40px;font-size:14px}
  #tasks{display:none}#switchbtn{display:block}#tray{display:none}
  #startbtn{flex:1}
}
@media (prefers-reduced-motion:reduce){#bg::after{animation:none;display:none}}

.card td,.card th{word-break:break-word;overflow-wrap:anywhere}

/* t1147: screen zoom + pinch text zoom */
html{zoom:var(--z,1)}
#zoomctl{display:flex;align-items:center;gap:2px;flex:none}
#zoomctl button{min-width:30px;padding:2px 6px;min-height:34px}
#zoomctl select{width:auto;padding:4px 2px;min-height:34px;font-size:12px}
.wb{font-size:calc(var(--fs) * var(--tz,1));touch-action:pan-x pan-y}
.wb .kv{font-size:.9em}.wb .crumbs{font-size:.86em}
textarea.code{font-size:calc(13px * var(--tz,1))}
.term pre{font-size:calc(12.5px * var(--tz,1))}
.tzbadge{position:absolute;right:28px;bottom:6px;z-index:3;min-height:28px;padding:2px 8px;font-size:11px;background:var(--panel);border-color:var(--line)}
.tzbadge[hidden]{display:none}
@media (max-width:720px){#tray{display:none}#zoomctl button{min-width:34px}}
.wb button,.wb select{font-size:var(--fs)}.wb .tzbadge{font-size:11px}

/* Copyright © Albert Lane. All Rights Reserved.
   Proprietary and Confidential — Albert Lane Proprietary Software License.
   Unauthorized use, copying, modification, or distribution is prohibited.
   License inquiries: https://albertlane.net */
/* t1171: layout + formatting pass (solid windows, full-height calculator, tidy title bar, icon grid, taskbar, spacing scale) */
:root{--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--top:calc(48px + env(safe-area-inset-top));--bar:calc(60px + env(safe-area-inset-bottom));--tap:48px}
/* solid surfaces: translucent panel colour painted over the theme's solid background, so nothing behind shows through */
#topbar,#taskbar,#start,.win,.toast{background:linear-gradient(var(--panel),var(--panel)) var(--bg)}
.wt{background:var(--title),linear-gradient(var(--panel),var(--panel)) var(--bg)}
#topbar{height:var(--top);padding:env(safe-area-inset-top) max(var(--s3),env(safe-area-inset-right)) 0 max(var(--s3),env(safe-area-inset-left));gap:var(--s2)}
#taskbar{height:var(--bar);padding:var(--s2) max(var(--s2),env(safe-area-inset-right)) calc(var(--s2) + env(safe-area-inset-bottom)) max(var(--s2),env(safe-area-inset-left));gap:var(--s2)}
#taskbar>button,#zoomctl button,#zoomctl select{height:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}
#startbtn{border-radius:22px}
#switchbtn{min-width:56px;gap:6px}
#zoomctl{gap:var(--s1)}#zoomctl button{min-width:40px;padding:0 var(--s2)}#zoomctl select{padding:0 var(--s1);font-size:13px}
#icons{gap:var(--s3) var(--s2);padding:var(--s4);grid-auto-rows:auto;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));justify-items:center}
.ico{width:100%;max-width:104px;padding:var(--s2) var(--s1);gap:var(--s2);font-size:12px}
.ico span{max-width:100%;min-height:2.4em;overflow-wrap:anywhere}
/* scrolling stays inside the window, never the page */
.wb{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:var(--s4)}.wb.flush{padding:0}
/* title bar */
.wt{gap:var(--s2);padding:var(--s1) var(--s2) var(--s1) var(--s3);min-height:48px}
.wt i{font-size:18px;line-height:1;flex:none}
.wt b{font-size:14px;font-weight:700;letter-spacing:.3px}
.wt button{flex:none;width:40px;height:40px;min-width:40px;min-height:40px;padding:0;display:grid;place-items:center;font-size:16px;line-height:1;border-radius:10px}
.wt button[aria-label=Close]:hover,.wt button[aria-label=Close]:focus-visible{border-color:var(--bad);color:var(--bad);box-shadow:0 0 10px rgba(255,77,109,.35)}
/* calculator fills its window: display on top, 5 even rows of keys */
.app-calculator .wb{display:flex;flex-direction:column;padding:var(--s3)}
.calc{flex:1;min-height:320px;grid-template-rows:minmax(72px,1.4fr) repeat(5,minmax(var(--tap),1fr));gap:var(--s2)}
.calc output{display:flex;align-items:flex-end;justify-content:flex-end;font-size:clamp(34px,9vw,56px);font-weight:700;line-height:1.1;padding:var(--s3) var(--s4);min-height:72px;background:rgba(0,0,0,.35);border-radius:12px;word-break:break-all;font-variant-numeric:tabular-nums}
.calc button{min-height:var(--tap);height:auto;font-size:clamp(20px,5.6vw,26px);font-weight:600;border-radius:12px;padding:0;touch-action:manipulation}
.calc button:active{transform:scale(.97)}
/* notes: give the writing box room */
.app-notes .wb textarea{min-height:120px;resize:vertical}
.card{padding:var(--s3)}
h3{margin:0 0 var(--s3)}
@media (max-width:720px){
  :root{--top:calc(52px + env(safe-area-inset-top))}
  #icons{grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s4) var(--s1);padding:var(--s4) var(--s2)}
  .ico{padding:var(--s1) 2px}
  .ico i{width:clamp(48px,14vw,60px);height:clamp(48px,14vw,60px);font-size:clamp(24px,7vw,30px)}
  .ico span{font-size:clamp(11px,3.1vw,12.5px)}
  .win{border:none;box-shadow:none}
  .wt{padding-left:max(var(--s3),env(safe-area-inset-left));padding-right:max(var(--s2),env(safe-area-inset-right));min-height:52px}
  .wt b{font-size:15px}
  .wt button{width:44px;height:44px;min-width:44px;min-height:44px;font-size:17px}
  .wb{padding:var(--s3) max(var(--s3),env(safe-area-inset-right)) var(--s3) max(var(--s3),env(safe-area-inset-left))}
  body.win-open #icons{visibility:hidden}
  .app-notes .wb textarea{min-height:30vh}
  #zoomctl button{min-width:40px}
}
@media (max-width:380px){
  #startbtn{padding:0 var(--s3)}
  #zoomctl select{font-size:12px}
  #zoomctl button{min-width:36px}
  #logo{font-size:16px;letter-spacing:1.5px}
}
body.win-max #icons{visibility:hidden}
